Move hdmi_cec imports at top-level (#29056)

This commit is contained in:
Quentame 2019-11-25 14:43:17 +01:00 committed by Pascal Vizeli
parent 6da01904c4
commit 335473cb71
2 changed files with 40 additions and 56 deletions

View file

@ -4,6 +4,25 @@ from functools import reduce
import logging import logging
import multiprocessing import multiprocessing
from pycec.cec import CecAdapter
from pycec.commands import CecCommand, KeyPressCommand, KeyReleaseCommand
from pycec.const import (
ADDR_AUDIOSYSTEM,
ADDR_BROADCAST,
ADDR_UNREGISTERED,
KEY_MUTE_OFF,
KEY_MUTE_ON,
KEY_MUTE_TOGGLE,
KEY_VOLUME_DOWN,
KEY_VOLUME_UP,
POWER_OFF,
POWER_ON,
STATUS_PLAY,
STATUS_STILL,
STATUS_STOP,
)
from pycec.network import HDMINetwork, PhysicalAddress
from pycec.tcp import TcpAdapter
import voluptuous as vol import voluptuous as vol
from homeassistant.components.media_player import DOMAIN as MEDIA_PLAYER from homeassistant.components.media_player import DOMAIN as MEDIA_PLAYER
@ -155,8 +174,6 @@ def parse_mapping(mapping, parents=None):
parents = [] parents = []
for addr, val in mapping.items(): for addr, val in mapping.items():
if isinstance(addr, (str,)) and isinstance(val, (str,)): if isinstance(addr, (str,)) and isinstance(val, (str,)):
from pycec.network import PhysicalAddress
yield (addr, PhysicalAddress(val)) yield (addr, PhysicalAddress(val))
else: else:
cur = parents + [addr] cur = parents + [addr]
@ -168,20 +185,6 @@ def parse_mapping(mapping, parents=None):
def setup(hass: HomeAssistant, base_config): def setup(hass: HomeAssistant, base_config):
"""Set up the CEC capability.""" """Set up the CEC capability."""
from pycec.network import HDMINetwork
from pycec.commands import CecCommand, KeyReleaseCommand, KeyPressCommand
from pycec.const import (
KEY_VOLUME_UP,
KEY_VOLUME_DOWN,
KEY_MUTE_ON,
KEY_MUTE_OFF,
KEY_MUTE_TOGGLE,
ADDR_AUDIOSYSTEM,
ADDR_BROADCAST,
ADDR_UNREGISTERED,
)
from pycec.cec import CecAdapter
from pycec.tcp import TcpAdapter
# Parse configuration into a dict of device name to physical address # Parse configuration into a dict of device name to physical address
# represented as a list of four elements. # represented as a list of four elements.
@ -278,8 +281,6 @@ def setup(hass: HomeAssistant, base_config):
def _select_device(call): def _select_device(call):
"""Select the active device.""" """Select the active device."""
from pycec.network import PhysicalAddress
addr = call.data[ATTR_DEVICE] addr = call.data[ATTR_DEVICE]
if not addr: if not addr:
_LOGGER.error("Device not found: %s", call.data[ATTR_DEVICE]) _LOGGER.error("Device not found: %s", call.data[ATTR_DEVICE])
@ -366,14 +367,6 @@ class CecDevice(Entity):
def update(self): def update(self):
"""Update device status.""" """Update device status."""
device = self._device device = self._device
from pycec.const import (
STATUS_PLAY,
STATUS_STOP,
STATUS_STILL,
POWER_OFF,
POWER_ON,
)
if device.power_status in [POWER_OFF, 3]: if device.power_status in [POWER_OFF, 3]:
self._state = STATE_OFF self._state = STATE_OFF
elif device.status == STATUS_PLAY: elif device.status == STATUS_PLAY:

View file

@ -1,6 +1,27 @@
"""Support for HDMI CEC devices as media players.""" """Support for HDMI CEC devices as media players."""
import logging import logging
from pycec.commands import CecCommand, KeyPressCommand, KeyReleaseCommand
from pycec.const import (
KEY_BACKWARD,
KEY_FORWARD,
KEY_MUTE_TOGGLE,
KEY_PAUSE,
KEY_PLAY,
KEY_STOP,
KEY_VOLUME_DOWN,
KEY_VOLUME_UP,
POWER_OFF,
POWER_ON,
STATUS_PLAY,
STATUS_STILL,
STATUS_STOP,
TYPE_AUDIO,
TYPE_PLAYBACK,
TYPE_RECORDER,
TYPE_TUNER,
)
from homeassistant.components.media_player import MediaPlayerDevice from homeassistant.components.media_player import MediaPlayerDevice
from homeassistant.components.media_player.const import ( from homeassistant.components.media_player.const import (
DOMAIN, DOMAIN,
@ -50,8 +71,6 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
def send_keypress(self, key): def send_keypress(self, key):
"""Send keypress to CEC adapter.""" """Send keypress to CEC adapter."""
from pycec.commands import KeyPressCommand, KeyReleaseCommand
_LOGGER.debug( _LOGGER.debug(
"Sending keypress %s to device %s", hex(key), hex(self._logical_address) "Sending keypress %s to device %s", hex(key), hex(self._logical_address)
) )
@ -60,20 +79,14 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
def send_playback(self, key): def send_playback(self, key):
"""Send playback status to CEC adapter.""" """Send playback status to CEC adapter."""
from pycec.commands import CecCommand
self._device.async_send_command(CecCommand(key, dst=self._logical_address)) self._device.async_send_command(CecCommand(key, dst=self._logical_address))
def mute_volume(self, mute): def mute_volume(self, mute):
"""Mute volume.""" """Mute volume."""
from pycec.const import KEY_MUTE_TOGGLE
self.send_keypress(KEY_MUTE_TOGGLE) self.send_keypress(KEY_MUTE_TOGGLE)
def media_previous_track(self): def media_previous_track(self):
"""Go to previous track.""" """Go to previous track."""
from pycec.const import KEY_BACKWARD
self.send_keypress(KEY_BACKWARD) self.send_keypress(KEY_BACKWARD)
def turn_on(self): def turn_on(self):
@ -92,8 +105,6 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
def media_stop(self): def media_stop(self):
"""Stop playback.""" """Stop playback."""
from pycec.const import KEY_STOP
self.send_keypress(KEY_STOP) self.send_keypress(KEY_STOP)
self._state = STATE_IDLE self._state = STATE_IDLE
@ -103,8 +114,6 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
def media_next_track(self): def media_next_track(self):
"""Skip to next track.""" """Skip to next track."""
from pycec.const import KEY_FORWARD
self.send_keypress(KEY_FORWARD) self.send_keypress(KEY_FORWARD)
def media_seek(self, position): def media_seek(self, position):
@ -117,8 +126,6 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
def media_pause(self): def media_pause(self):
"""Pause playback.""" """Pause playback."""
from pycec.const import KEY_PAUSE
self.send_keypress(KEY_PAUSE) self.send_keypress(KEY_PAUSE)
self._state = STATE_PAUSED self._state = STATE_PAUSED
@ -128,22 +135,16 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
def media_play(self): def media_play(self):
"""Start playback.""" """Start playback."""
from pycec.const import KEY_PLAY
self.send_keypress(KEY_PLAY) self.send_keypress(KEY_PLAY)
self._state = STATE_PLAYING self._state = STATE_PLAYING
def volume_up(self): def volume_up(self):
"""Increase volume.""" """Increase volume."""
from pycec.const import KEY_VOLUME_UP
_LOGGER.debug("%s: volume up", self._logical_address) _LOGGER.debug("%s: volume up", self._logical_address)
self.send_keypress(KEY_VOLUME_UP) self.send_keypress(KEY_VOLUME_UP)
def volume_down(self): def volume_down(self):
"""Decrease volume.""" """Decrease volume."""
from pycec.const import KEY_VOLUME_DOWN
_LOGGER.debug("%s: volume down", self._logical_address) _LOGGER.debug("%s: volume down", self._logical_address)
self.send_keypress(KEY_VOLUME_DOWN) self.send_keypress(KEY_VOLUME_DOWN)
@ -155,14 +156,6 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
def update(self): def update(self):
"""Update device status.""" """Update device status."""
device = self._device device = self._device
from pycec.const import (
STATUS_PLAY,
STATUS_STOP,
STATUS_STILL,
POWER_OFF,
POWER_ON,
)
if device.power_status in [POWER_OFF, 3]: if device.power_status in [POWER_OFF, 3]:
self._state = STATE_OFF self._state = STATE_OFF
elif not self.support_pause: elif not self.support_pause:
@ -180,8 +173,6 @@ class CecPlayerDevice(CecDevice, MediaPlayerDevice):
@property @property
def supported_features(self): def supported_features(self):
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
from pycec.const import TYPE_RECORDER, TYPE_PLAYBACK, TYPE_TUNER, TYPE_AUDIO
if self.type_id == TYPE_RECORDER or self.type == TYPE_PLAYBACK: if self.type_id == TYPE_RECORDER or self.type == TYPE_PLAYBACK:
return ( return (
SUPPORT_TURN_ON SUPPORT_TURN_ON