Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/hardware/hardwaremanager.py
diff options
context:
space:
mode:
Diffstat (limited to 'shell/hardware/hardwaremanager.py')
-rw-r--r--shell/hardware/hardwaremanager.py56
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()