diff --git a/mopidy_touchscreen/__init__.py b/mopidy_touchscreen/__init__.py index e04d106..0a469e7 100644 --- a/mopidy_touchscreen/__init__.py +++ b/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): diff --git a/mopidy_touchscreen/ext.conf b/mopidy_touchscreen/ext.conf index 3c431ba..97165cb 100644 --- a/mopidy_touchscreen/ext.conf +++ b/mopidy_touchscreen/ext.conf @@ -5,4 +5,9 @@ screen_height = 240 cursor = True fullscreen = False cache_dir = $XDG_CACHE_DIR/mopidy/touchscreen -gpio = False \ No newline at end of file +gpio = False +gpio_left = 4 +gpio_right = 27 +gpio_up = 22 +gpio_down = 23 +gpio_enter = 24 diff --git a/mopidy_touchscreen/gpio_inpput_manager.py b/mopidy_touchscreen/gpio_inpput_manager.py index b4f468c..d83a456 100644 --- a/mopidy_touchscreen/gpio_inpput_manager.py +++ b/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: diff --git a/mopidy_touchscreen/touch_screen.py b/mopidy_touchscreen/touch_screen.py index 50d901d..9bfc90d 100644 --- a/mopidy_touchscreen/touch_screen.py +++ b/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()