From 1f091b20adc7183559820741dfc9166f737feb53 Mon Sep 17 00:00:00 2001 From: luca-simonetti <44196863+luca-simonetti@users.noreply.github.com> Date: Fri, 2 Nov 2018 10:47:25 +0100 Subject: [PATCH] fix: use a different convention to handle multiple devices on same card (#767) * fix: use a different convention to handle multiple devices on same card * fix: use a different convention to handle multiple devices on same card * Update alsa.py * Update alsa.py --- hassio/const.py | 3 +++ hassio/host/alsa.py | 7 +++++-- hassio/misc/hardware.py | 10 ++++++---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/hassio/const.py b/hassio/const.py index 0f0719d39..a7304524a 100644 --- a/hassio/const.py +++ b/hassio/const.py @@ -259,3 +259,6 @@ ROLE_HOMEASSISTANT = 'homeassistant' ROLE_BACKUP = 'backup' ROLE_MANAGER = 'manager' ROLE_ADMIN = 'admin' + +CHAN_ID = 'chan_id' +CHAN_TYPE = 'chan_type' diff --git a/hassio/host/alsa.py b/hassio/host/alsa.py index e6210e1a6..749105539 100644 --- a/hassio/host/alsa.py +++ b/hassio/host/alsa.py @@ -6,7 +6,8 @@ from string import Template import attr -from ..const import ATTR_INPUT, ATTR_OUTPUT, ATTR_DEVICES, ATTR_NAME +from ..const import ( + ATTR_INPUT, ATTR_OUTPUT, ATTR_DEVICES, ATTR_NAME, CHAN_ID, CHAN_TYPE) from ..coresys import CoreSysAttributes _LOGGER = logging.getLogger(__name__) @@ -58,7 +59,9 @@ class AlsaAudio(CoreSysAttributes): # Process devices for dev_id, dev_data in self.sys_hardware.audio_devices.items(): - for chan_id, chan_type in dev_data[ATTR_DEVICES].items(): + for chan_info in dev_data[ATTR_DEVICES]: + chan_id = chan_info[CHAN_ID] + chan_type = chan_info[CHAN_TYPE] alsa_id = f"{dev_id},{chan_id}" dev_name = dev_data[ATTR_NAME] diff --git a/hassio/misc/hardware.py b/hassio/misc/hardware.py index 2e205a691..0183fb0fe 100644 --- a/hassio/misc/hardware.py +++ b/hassio/misc/hardware.py @@ -6,7 +6,7 @@ import re import pyudev -from ..const import ATTR_NAME, ATTR_TYPE, ATTR_DEVICES +from ..const import ATTR_NAME, ATTR_TYPE, ATTR_DEVICES, CHAN_ID, CHAN_TYPE _LOGGER = logging.getLogger(__name__) @@ -87,14 +87,16 @@ class Hardware: audio_list[match.group(1)] = { ATTR_NAME: match.group(3), ATTR_TYPE: match.group(2), - ATTR_DEVICES: {}, + ATTR_DEVICES: [], } # parse devices for match in RE_DEVICES.finditer(devices): try: - audio_list[match.group(1)][ATTR_DEVICES][match.group(2)] = \ - match.group(3) + audio_list[match.group(1)][ATTR_DEVICES].append({ + CHAN_ID: match.group(2), + CHAN_TYPE: match.group(3) + }) except KeyError: _LOGGER.warning("Wrong audio device found %s", match.group(0)) continue