9and3r 11 anni fa
parent
commit
4abfb1e697

+ 5 - 0
mopidy_touchscreen/__init__.py

@@ -32,6 +32,11 @@ class Extension(ext.Extension):
         schema['fullscreen'] = config.Boolean()
         schema['cache_dir'] = config.Path()
         schema['gpio'] = config.Boolean()
+        schema['gpio_left'] = config.Integer()
+        schema['gpio_right'] = config.Integer()
+        schema['gpio_up'] = config.Integer()
+        schema['gpio_down'] = config.Integer()
+        schema['gpio_enter'] = config.Integer()
         return schema
 
     def setup(self, registry):

+ 6 - 1
mopidy_touchscreen/ext.conf

@@ -5,4 +5,9 @@ screen_height = 240
 cursor = True
 fullscreen = False
 cache_dir = $XDG_CACHE_DIR/mopidy/touchscreen
-gpio = False
+gpio = False
+gpio_left = 4
+gpio_right = 27
+gpio_up = 22
+gpio_down = 23
+gpio_enter = 24

+ 15 - 15
mopidy_touchscreen/gpio_inpput_manager.py

@@ -7,32 +7,28 @@ logger = logging.getLogger(__name__)
 
 class GPIOManager():
 
-    def __init__(self):
+    def __init__(self, pins):
         GPIO.setmode(GPIO.BCM)
 
         # Left Button
-        GPIO.setup(4, GPIO.IN, pull_up_down = GPIO.PUD_UP)
-        GPIO.add_event_detect(4, GPIO.BOTH, callback=left, bouncetime=30)
+        GPIO.setup(pins['left'], GPIO.IN, pull_up_down = GPIO.PUD_UP)
+        GPIO.add_event_detect(pins['left'], GPIO.BOTH, callback=left, bouncetime=30)
 
          # Right Button
-        GPIO.setup(21, GPIO.IN, pull_up_down = GPIO.PUD_UP)
-        GPIO.add_event_detect(21, GPIO.BOTH, callback=right, bouncetime=30)
+        GPIO.setup(pins['right'], GPIO.IN, pull_up_down = GPIO.PUD_UP)
+        GPIO.add_event_detect(pins['right'], GPIO.BOTH, callback=right, bouncetime=30)
 
          # Up Button
-        GPIO.setup(22, GPIO.IN, pull_up_down = GPIO.PUD_UP)
-        GPIO.add_event_detect(22, GPIO.BOTH, callback=up, bouncetime=30)
+        GPIO.setup(pins['up'], GPIO.IN, pull_up_down = GPIO.PUD_UP)
+        GPIO.add_event_detect(pins['up'], GPIO.BOTH, callback=up, bouncetime=30)
 
          # Down Button
-        GPIO.setup(23, GPIO.IN, pull_up_down = GPIO.PUD_UP)
-        GPIO.add_event_detect(23, GPIO.BOTH, callback=right, bouncetime=30)
+        GPIO.setup(pins['down'], GPIO.IN, pull_up_down = GPIO.PUD_UP)
+        GPIO.add_event_detect(pins['down'], GPIO.BOTH, callback=right, bouncetime=30)
 
          # Enter Button
-        GPIO.setup(24, GPIO.IN, pull_up_down = GPIO.PUD_UP)
-        GPIO.add_event_detect(24, GPIO.BOTH, callback=right, bouncetime=30)
-
-
-
-
+        GPIO.setup(pins['enter'], GPIO.IN, pull_up_down = GPIO.PUD_UP)
+        GPIO.add_event_detect(pins['enter'], GPIO.BOTH, callback=right, bouncetime=30)
 
 
 def right(channel):
@@ -45,6 +41,7 @@ def right(channel):
     event = pygame.event.Event(type, dict)
     pygame.event.post(event)
 
+
 def left(channel):
     dict = {}
     if GPIO.input(channel) == 1:
@@ -55,6 +52,7 @@ def left(channel):
     event = pygame.event.Event(type, dict)
     pygame.event.post(event)
 
+
 def down(channel):
     dict = {}
     if GPIO.input(channel) == 1:
@@ -65,6 +63,7 @@ def down(channel):
     event = pygame.event.Event(type, dict)
     pygame.event.post(event)
 
+
 def up(channel):
     dict = {}
     if GPIO.input(channel) == 1:
@@ -75,6 +74,7 @@ def up(channel):
     event = pygame.event.Event(type, dict)
     pygame.event.post(event)
 
+
 def enter(channel):
     dict = {}
     if GPIO.input(channel) == 1:

+ 7 - 1
mopidy_touchscreen/touch_screen.py

@@ -32,7 +32,13 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener):
         self.gpio = config['touchscreen']['gpio']
         if self.gpio:
             from .gpio_inpput_manager import GPIOManager
-            self.gpio_manager = GPIOManager()
+            pins = {}
+            pins['left'] = config['touchscreen']['gpio_left']
+            pins['right'] = config['touchscreen']['gpio_right']
+            pins['up'] = config['touchscreen']['gpio_up']
+            pins['down'] = config['touchscreen']['gpio_down']
+            pins['enter'] = config['touchscreen']['gpio_enter']
+            self.gpio_manager = GPIOManager(pins)
 
     def start_thread(self):
         clock = pygame.time.Clock()