Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter.bender@gmail.com>2011-08-08 15:02:58 (GMT)
committer Walter Bender <walter.bender@gmail.com>2011-08-08 15:02:58 (GMT)
commitcc7e7ea18c997fdd9ef9c800e103cd1bf7a8e8ff (patch)
treed1b6a11e7651ebaaaa5d11b0f2019b21fce70c8b
parentd574269ca0c3ae8bdc37da1f17db353fed0d7606 (diff)
removed hal dependency; using dmi instead to determine hardware
-rw-r--r--measure.py36
1 files changed, 21 insertions, 15 deletions
diff --git a/measure.py b/measure.py
index 4208359..106972e 100644
--- a/measure.py
+++ b/measure.py
@@ -28,7 +28,7 @@ from textbox import TextBox
import gobject
import dbus
from os import environ, path, remove
-from os.path import join
+from os.path import join, exists
import csv
from gettext import gettext as _
@@ -87,27 +87,33 @@ def _is_xo(hw):
def _get_hardware():
""" Determine whether we are using XO 1.0, 1.5, or "unknown" hardware """
- bus = dbus.SystemBus()
-
- comp_obj = bus.get_object('org.freedesktop.Hal',
- '/org/freedesktop/Hal/devices/computer')
- dev = dbus.Interface(comp_obj, 'org.freedesktop.Hal.Device')
- if dev.PropertyExists('system.hardware.vendor') and \
- dev.PropertyExists('system.hardware.version'):
- if dev.GetProperty('system.hardware.vendor') == 'OLPC':
- if dev.GetProperty('system.hardware.version') == '1.5':
- return XO15
- else:
- return XO1
+ product = _get_dmi('product_name')
+ if product is None:
+ if exists('/etc/olpc-release') or exists('/sys/power/olpc-pm'):
+ return XO1
else:
return UNKNOWN
- elif path.exists('/etc/olpc-release') or \
- path.exists('/sys/power/olpc-pm'):
+ if product != 'XO':
+ return UNKNOWN
+ version = _get_dmi('product_version')
+ if version == '1':
return XO1
+ elif version == '1.5':
+ return XO15
else:
return UNKNOWN
+def _get_dmi(node):
+ ''' The desktop management interface should be a reliable source
+ for product and version information. '''
+ path = join('/sys/class/dmi/id', node)
+ try:
+ return open(path).readline().strip()
+ except:
+ return None
+
+
class MeasureActivity(activity.Activity):
""" Oscilloscope Sugar activity """