diff options
Diffstat (limited to 'shell/hardware/hardwaremanager.py')
-rw-r--r-- | shell/hardware/hardwaremanager.py | 56 |
1 files changed, 41 insertions, 15 deletions
diff --git a/shell/hardware/hardwaremanager.py b/shell/hardware/hardwaremanager.py index 4712970..3e7066e 100644 --- a/shell/hardware/hardwaremanager.py +++ b/shell/hardware/hardwaremanager.py @@ -17,9 +17,10 @@ import logging import dbus +import gst +import gst.interfaces from hardware.nmclient import NMClient -from extensions import AudioManager _HARDWARE_MANAGER_INTERFACE = 'org.laptop.HardwareManager' _HARDWARE_MANAGER_SERVICE = 'org.laptop.HardwareManager' @@ -30,18 +31,52 @@ B_AND_W_MODE = 1 class HardwareManager(object): def __init__(self): - bus = dbus.SystemBus() - proxy = bus.get_object(_HARDWARE_MANAGER_SERVICE, - _HARDWARE_MANAGER_OBJECT_PATH) - self._service = dbus.Interface(proxy, _HARDWARE_MANAGER_INTERFACE) + try: + bus = dbus.SystemBus() + proxy = bus.get_object(_HARDWARE_MANAGER_SERVICE, + _HARDWARE_MANAGER_OBJECT_PATH) + self._service = dbus.Interface(proxy, _HARDWARE_MANAGER_INTERFACE) + except dbus.DBusException, e: + self._service = None + logging.info('Hardware manager service not found.') + + self._mixer = gst.element_factory_make('alsamixer') + self._mixer.set_state(gst.STATE_PAUSED) + + + for track in self._mixer.list_tracks(): + if track.flags & gst.interfaces.MIXER_TRACK_MASTER: + self._mixer_master = track + + def set_volume(self, volume): + if volume < 0 or volume > 100: + logging.error('Trying to set an invalid volume value.') + return + + max_volume = self._mixer_master.max_volume + min_volume = self._mixer_master.min_volume + + volume = (volume / 100.0) * (max_volume - min_volume) + min_volume + volume_list = [ volume ] * self._mixer_master.num_channels + + self._mixer.set_volume(self._mixer_master, tuple(volume_list)) def set_display_mode(self, mode): + if not self._service: + return + self._service.set_display_mode(mode) def set_display_brightness(self, level): + if not self._service: + return + self._service.set_display_brightness(level) def toggle_keyboard_brightness(self): + if not self._service: + return + if self._service.get_keyboard_brightness(): self._service.set_keyboard_brightness(False) else: @@ -50,19 +85,10 @@ class HardwareManager(object): def get_hardware_manager(): return _hardware_manager -def get_audio_manager(): - return _audio_manager - def get_network_manager(): return _network_manager -_audio_manager = AudioManager() - -try: - _hardware_manager = HardwareManager() -except dbus.DBusException, e: - _hardware_manager = None - logging.info('Hardware manager service not found.') +_hardware_manager = HardwareManager() try: _network_manager = NMClient() |