From 57e1991ace2d9011d073cb28f042c57473de03ff Mon Sep 17 00:00:00 2001 From: Daniel Walton Date: Wed, 20 Sep 2017 19:17:59 -0400 Subject: [PATCH 1/5] Stretch fixes (#366) * list the device name in 'Device not connected' Exception * api_test.py must use python3 * Update README for tests * Update to latest ev3dev-lang to pick up stretch fixes * Update tests/README * Update tests/README --- ev3dev-lang | 2 +- ev3dev/core.py | 9 +++++++-- ev3dev/ev3.py | 20 ++++++++++---------- tests/README.md | 29 ++++++++++++++++++++++++----- tests/api_tests.py | 2 +- 5 files changed, 43 insertions(+), 19 deletions(-) diff --git a/ev3dev-lang b/ev3dev-lang index 008804f..0169750 160000 --- a/ev3dev-lang +++ b/ev3dev-lang @@ -1 +1 @@ -Subproject commit 008804f5c28acd225f1b43057be2060d9965b2c1 +Subproject commit 0169750bf9aeefac423c38929287b4ad9ef7abd4 diff --git a/ev3dev/core.py b/ev3dev/core.py index 8747923..0dd29ca 100644 --- a/ev3dev/core.py +++ b/ev3dev/core.py @@ -42,6 +42,7 @@ import fnmatch import numbers import array +import logging import mmap import ctypes import re @@ -53,6 +54,8 @@ from struct import pack, unpack from subprocess import Popen, check_output, PIPE +log = logging.getLogger(__name__) + try: # This is a linux-specific module. # It is required by the Button() class, but failure to import it may be @@ -195,7 +198,8 @@ def _get_attribute(self, attribute, name): attribute.seek(0) return attribute, attribute.read().strip().decode() else: - raise Exception('Device is not connected') + log.info("%s: path %s, attribute %s" % (self, self._path, name)) + raise Exception("%s is not connected" % self) def _set_attribute(self, attribute, name, value): """Device attribute setter""" @@ -208,7 +212,8 @@ def _set_attribute(self, attribute, name, value): attribute.flush() return attribute else: - raise Exception('Device is not connected') + log.info("%s: path %s, attribute %s" % (self, self._path, name)) + raise Exception("%s is not connected" % self) def get_attr_int(self, attribute, name): attribute, value = self._get_attribute(attribute, name) diff --git a/ev3dev/ev3.py b/ev3dev/ev3.py index 725f713..c9ec23f 100644 --- a/ev3dev/ev3.py +++ b/ev3dev/ev3.py @@ -47,10 +47,10 @@ class Leds(object): # ~autogen led-colors platforms.ev3.led>currentClass - red_left = Led(name_pattern='ev3:left:red:ev3dev') - red_right = Led(name_pattern='ev3:right:red:ev3dev') - green_left = Led(name_pattern='ev3:left:green:ev3dev') - green_right = Led(name_pattern='ev3:right:green:ev3dev') + red_left = Led(name_pattern='led0:red:brick-status') + red_right = Led(name_pattern='led1:red:brick-status') + green_left = Led(name_pattern='led0:green:brick-status') + green_right = Led(name_pattern='led1:green:brick-status') LEFT = ( red_left, green_left, ) RIGHT = ( red_right, green_right, ) @@ -165,12 +165,12 @@ def on_backspace(state): _buttons = { - 'up': {'name': '/dev/input/by-path/platform-gpio-keys.0-event', 'value': 103}, - 'down': {'name': '/dev/input/by-path/platform-gpio-keys.0-event', 'value': 108}, - 'left': {'name': '/dev/input/by-path/platform-gpio-keys.0-event', 'value': 105}, - 'right': {'name': '/dev/input/by-path/platform-gpio-keys.0-event', 'value': 106}, - 'enter': {'name': '/dev/input/by-path/platform-gpio-keys.0-event', 'value': 28}, - 'backspace': {'name': '/dev/input/by-path/platform-gpio-keys.0-event', 'value': 14}, + 'up': {'name': '/dev/input/by-path/platform-gpio_keys-event', 'value': 103}, + 'down': {'name': '/dev/input/by-path/platform-gpio_keys-event', 'value': 108}, + 'left': {'name': '/dev/input/by-path/platform-gpio_keys-event', 'value': 105}, + 'right': {'name': '/dev/input/by-path/platform-gpio_keys-event', 'value': 106}, + 'enter': {'name': '/dev/input/by-path/platform-gpio_keys-event', 'value': 28}, + 'backspace': {'name': '/dev/input/by-path/platform-gpio_keys-event', 'value': 14}, } @property diff --git a/tests/README.md b/tests/README.md index b8f0017..0c7adf4 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1,8 +1,27 @@ +# fake-sys directory +The tests require the fake-sys directory which comes from +https://github.com/ddemidov/ev3dev-lang-fake-sys + +If you have already cloned the ev3dev-lang-python repo but do not have the +`fake-sys` directory use `git submodule init` to get it. If you have not +already cloned the ev3dev-lang-python repo you can use the `--recursive` option +when you git clone. Example: + +``` +$ git clone --recursive https://github.com/rhempel/ev3dev-lang-python.git +``` + +# Running Tests +To run the tests do: +``` +$ ./api_tests.py +``` + +# Misc Commands used to copy the /sys/class node: -```sh -node=lego-sensor/sensor0 -mkdir -p ./${node} -# Copy contents of special files, do not follow symlinks: -cp -P --copy-contents -r /sys/class/${node}/* ./${node}/ +``` +$ node=lego-sensor/sensor0 +$ mkdir -p ./${node} +$ cp -P --copy-contents -r /sys/class/${node}/* ./${node}/ ``` diff --git a/tests/api_tests.py b/tests/api_tests.py index 6edb48e..7476352 100755 --- a/tests/api_tests.py +++ b/tests/api_tests.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import unittest, sys, os FAKE_SYS = os.path.join(os.path.dirname(__file__), 'fake-sys') From 078b98a24b9c8fdc2b49dba86279df14df8e8769 Mon Sep 17 00:00:00 2001 From: Denis Demidov Date: Fri, 6 Oct 2017 14:47:32 +0300 Subject: [PATCH 2/5] Changle log for the stable stretch release --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 6f80429..9155bf0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +python-ev3dev (1.1.0) testing; urgency=medium + + [Daniel Walton] + * Fixes to make the library work on Debian Stretch. + + -- Denis Demidov Sat, 06 Oct 2017 00:00:00 +0300 + python-ev3dev (1.0.0) stable; urgency=medium [Denis Demidov] From 21a5af40dc5b563d8bd598f090a253d5bec95245 Mon Sep 17 00:00:00 2001 From: Denis Demidov Date: Mon, 30 Apr 2018 09:37:06 +0300 Subject: [PATCH 3/5] Return handle to aplay in Sound.espeak See #461 --- ev3dev/core.py | 2 +- tests/fake-sys | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ev3dev/core.py b/ev3dev/core.py index 0dd29ca..f543bca 100644 --- a/ev3dev/core.py +++ b/ev3dev/core.py @@ -3450,7 +3450,7 @@ def speak(text, espeak_opts='-a 200 -s 130'): cmd_line = '/usr/bin/espeak --stdout {0} "{1}"'.format(espeak_opts, text) espeak = Popen(shlex.split(cmd_line), stdout=PIPE) play = Popen(['/usr/bin/aplay', '-q'], stdin=espeak.stdout, stdout=n) - return espeak + return play @staticmethod def _get_channel(): diff --git a/tests/fake-sys b/tests/fake-sys index c0e2292..a006e99 160000 --- a/tests/fake-sys +++ b/tests/fake-sys @@ -1 +1 @@ -Subproject commit c0e2292eb2f39bd22e741193259ce12eb308a824 +Subproject commit a006e999da6434bf094242847dd85593aaa0b3a0 From e11289dc2772b3ef4f846160eb2dd91230daaa99 Mon Sep 17 00:00:00 2001 From: Kaelin Laundry Date: Thu, 14 Jun 2018 22:47:04 -0700 Subject: [PATCH 4/5] Fix fake-sys submodule (#477) --- .gitmodules | 2 +- tests/fake-sys | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index ba05cc2..f43ab5e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -3,4 +3,4 @@ url = https://github.com/ev3dev/ev3dev-lang.git [submodule "tests/fake-sys"] path = tests/fake-sys - url = https://github.com/rhempel/ev3dev-lang-fake-sys.git + url = https://github.com/ev3dev/ev3dev-lang-fake-sys.git diff --git a/tests/fake-sys b/tests/fake-sys index a006e99..c0e2292 160000 --- a/tests/fake-sys +++ b/tests/fake-sys @@ -1 +1 @@ -Subproject commit a006e999da6434bf094242847dd85593aaa0b3a0 +Subproject commit c0e2292eb2f39bd22e741193259ce12eb308a824 From 3b2597398bc0bb0b9fe0ec88322837dbbc749e04 Mon Sep 17 00:00:00 2001 From: Kaelin Laundry Date: Thu, 14 Jun 2018 22:58:44 -0700 Subject: [PATCH 5/5] Remove Stretch-only changes accidentally introduced to Jessie branch (#470) --- ev3dev/ev3.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ev3dev/ev3.py b/ev3dev/ev3.py index c9ec23f..725f713 100644 --- a/ev3dev/ev3.py +++ b/ev3dev/ev3.py @@ -47,10 +47,10 @@ class Leds(object): # ~autogen led-colors platforms.ev3.led>currentClass - red_left = Led(name_pattern='led0:red:brick-status') - red_right = Led(name_pattern='led1:red:brick-status') - green_left = Led(name_pattern='led0:green:brick-status') - green_right = Led(name_pattern='led1:green:brick-status') + red_left = Led(name_pattern='ev3:left:red:ev3dev') + red_right = Led(name_pattern='ev3:right:red:ev3dev') + green_left = Led(name_pattern='ev3:left:green:ev3dev') + green_right = Led(name_pattern='ev3:right:green:ev3dev') LEFT = ( red_left, green_left, ) RIGHT = ( red_right, green_right, ) @@ -165,12 +165,12 @@ def on_backspace(state): _buttons = { - 'up': {'name': '/dev/input/by-path/platform-gpio_keys-event', 'value': 103}, - 'down': {'name': '/dev/input/by-path/platform-gpio_keys-event', 'value': 108}, - 'left': {'name': '/dev/input/by-path/platform-gpio_keys-event', 'value': 105}, - 'right': {'name': '/dev/input/by-path/platform-gpio_keys-event', 'value': 106}, - 'enter': {'name': '/dev/input/by-path/platform-gpio_keys-event', 'value': 28}, - 'backspace': {'name': '/dev/input/by-path/platform-gpio_keys-event', 'value': 14}, + 'up': {'name': '/dev/input/by-path/platform-gpio-keys.0-event', 'value': 103}, + 'down': {'name': '/dev/input/by-path/platform-gpio-keys.0-event', 'value': 108}, + 'left': {'name': '/dev/input/by-path/platform-gpio-keys.0-event', 'value': 105}, + 'right': {'name': '/dev/input/by-path/platform-gpio-keys.0-event', 'value': 106}, + 'enter': {'name': '/dev/input/by-path/platform-gpio-keys.0-event', 'value': 28}, + 'backspace': {'name': '/dev/input/by-path/platform-gpio-keys.0-event', 'value': 14}, } @property