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
This commit is contained in:
luca-simonetti 2018-11-02 10:47:25 +01:00 committed by Pascal Vizeli
parent d3b4a03851
commit 1f091b20ad
3 changed files with 14 additions and 6 deletions

View File

@ -259,3 +259,6 @@ ROLE_HOMEASSISTANT = 'homeassistant'
ROLE_BACKUP = 'backup'
ROLE_MANAGER = 'manager'
ROLE_ADMIN = 'admin'
CHAN_ID = 'chan_id'
CHAN_TYPE = 'chan_type'

View File

@ -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]

View File

@ -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