Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/TurtleArt
diff options
context:
space:
mode:
authorWalter Bender <walter.bender@gmail.com>2011-04-09 12:30:32 (GMT)
committer Walter Bender <walter.bender@gmail.com>2011-04-09 12:30:32 (GMT)
commitd88f4044dfd8fd5b8ef428f9675f57bd0d5a6be6 (patch)
tree5a489596a18e619279c8f32acc2becc452eed0a0 /TurtleArt
parentf2a694d982fb2ffe07ae7d0d9b9417f38854b4a0 (diff)
using dmi for hw detection
Diffstat (limited to 'TurtleArt')
-rw-r--r--TurtleArt/tautils.py43
1 files changed, 19 insertions, 24 deletions
diff --git a/TurtleArt/tautils.py b/TurtleArt/tautils.py
index 67f10e2..ab4336f 100644
--- a/TurtleArt/tautils.py
+++ b/TurtleArt/tautils.py
@@ -1,5 +1,5 @@
#Copyright (c) 2007-8, Playful Invention Company.
-#Copyright (c) 2008-10, Walter Bender
+#Copyright (c) 2008-11, Walter Bender
#Permission is hereby granted, free of charge, to any person obtaining a copy
#of this software and associated documentation files (the "Software"), to deal
@@ -785,32 +785,27 @@ def find_blk_below(blk, name):
return _gblk
return None
+"""
+Are we on an OLPC XO?
+"""
+
def get_hardware():
""" Determine whether we are using XO 1.0, 1.5, or "unknown" hardware """
- bus = dbus.SystemBus()
- comp_obj = None
- try:
- comp_obj = bus.get_object('org.freedesktop.Hal',
- '/org/freedesktop/Hal/devices/computer')
- except dbus.exceptions.DBusException:
- error_output('Unable to get dbus object \
-/org/freedesktop/Hal/devices/computer')
-
- if comp_obj is not None:
- 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
- else:
- return UNKNOWN
-
- if os.path.exists('/etc/olpc-release') or \
- os.path.exists('/sys/power/olpc-pm'):
+ if _get_dmi('product_name') != '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):
+ path = os.path.join('/sys/class/dmi/id', node)
+ try:
+ return open(path).readline().strip()
+ except:
+ return None