Index: client/bin/base_utils.py |
diff --git a/client/bin/base_utils.py b/client/bin/base_utils.py |
index 00e745f157fbd5f86180ef36e4145517e0d6ec3a..5d7256667694769dbda61c525ac88f62d0d190b6 100644 |
--- a/client/bin/base_utils.py |
+++ b/client/bin/base_utils.py |
@@ -748,3 +748,57 @@ def process_is_alive(name_pattern): |
ignore_status=True) == 0 |
+def get_hwclock_seconds(utc=True): |
+ """ |
+ Return the hardware clock in seconds as a floating point value. |
+ Use Coordinated Universal Time if utc is True, local time otherwise. |
+ Raise a ValueError if unable to read the hardware clock. |
+ """ |
+ cmd = '/sbin/hwclock --debug' |
+ if utc: |
+ cmd += ' --utc' |
+ hwclock_output = utils.system_output(cmd, ignore_status=True) |
+ match = re.search(r'= ([0-9]+) seconds since .+ (-?[0-9.]+) seconds$', |
+ hwclock_output, re.DOTALL) |
+ if match: |
+ seconds = int(match.group(1)) + float(match.group(2)) |
+ logging.debug('hwclock seconds = %f' % seconds) |
+ return seconds |
+ |
+ raise ValueError('Unable to read the hardware clock -- ' + |
+ hwclock_output) |
+ |
+ |
+def set_wake_alarm(alarm_time): |
+ """ |
+ Set the hardware RTC-based wake alarm to 'alarm_time'. |
+ """ |
+ utils.write_one_line('/sys/class/rtc/rtc0/wakealarm', str(alarm_time)) |
+ |
+ |
+def set_power_state(state): |
+ """ |
+ Set the system power state to 'state'. |
+ """ |
+ utils.write_one_line('/sys/power/state', state) |
+ |
+ |
+def standby(): |
+ """ |
+ Power-on suspend (S1) |
+ """ |
+ set_power_state('standby') |
+ |
+ |
+def suspend_to_ram(): |
+ """ |
+ Suspend the system to RAM (S3) |
+ """ |
+ set_power_state('mem') |
+ |
+ |
+def suspend_to_disk(): |
+ """ |
+ Suspend the system to disk (S4) |
+ """ |
+ set_power_state('disk') |