Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/extensions/cpsection/aboutcomputer/model.py
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/cpsection/aboutcomputer/model.py')
-rw-r--r--extensions/cpsection/aboutcomputer/model.py24
1 files changed, 18 insertions, 6 deletions
diff --git a/extensions/cpsection/aboutcomputer/model.py b/extensions/cpsection/aboutcomputer/model.py
index a02eee6..431c9c0 100644
--- a/extensions/cpsection/aboutcomputer/model.py
+++ b/extensions/cpsection/aboutcomputer/model.py
@@ -35,6 +35,7 @@ _NM_DEVICE_TYPE_WIFI = 2
_OFW_TREE = '/ofw'
_PROC_TREE = '/proc/device-tree'
+_DMI_DIRECTORY = '/sys/class/dmi/id'
_SN = 'serial-number'
_MODEL = 'openprom/model'
@@ -96,18 +97,29 @@ def print_build_number():
print get_build_number()
+def _parse_firmware_number(firmware_no):
+ if firmware_no is None:
+ firmware_no = _not_available
+ else:
+ # try to extract Open Firmware version from OLPC style version
+ # string, e.g. "CL2 Q4B11 Q4B"
+ if firmware_no.startswith('CL'):
+ firmware_no = firmware_no[6:13]
+ return firmware_no
+
+
def get_firmware_number():
firmware_no = None
if os.path.exists(os.path.join(_OFW_TREE, _MODEL)):
firmware_no = _read_file(os.path.join(_OFW_TREE, _MODEL))
+ firmware_no = _parse_firmware_number(firmware_no)
elif os.path.exists(os.path.join(_PROC_TREE, _MODEL)):
firmware_no = _read_file(os.path.join(_PROC_TREE, _MODEL))
- if firmware_no is None:
- firmware_no = _not_available
- else:
- firmware_no = re.split(' +', firmware_no)
- if len(firmware_no) == 3:
- firmware_no = firmware_no[1]
+ firmware_no = _parse_firmware_number(firmware_no)
+ elif os.path.exists(os.path.join(_DMI_DIRECTORY, 'bios_version')):
+ firmware_no = _read_file(os.path.join(_DMI_DIRECTORY, 'bios_version'))
+ if firmware_no is None:
+ firmware_no = _not_available
return firmware_no