| # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can |
| # be # found in the LICENSE file. |
| |
| """Provides utility methods for the Real Time Clock device. |
| """ |
| |
| import errno, glob, os |
| |
| |
| def get_rtc_devices(): |
| """ |
| Return a list of all RTC device names on the system. |
| |
| The RTC device node will be found at /dev/$NAME. |
| """ |
| return [os.path.basename(rtc) for rtc in glob.glob('/sys/class/rtc/*')] |
| |
| |
| def get_seconds(utc=True, rtc_device='rtc0'): |
| """ |
| Read the current time out of the RTC |
| """ |
| return int(file('/sys/class/rtc/%s/since_epoch' % rtc_device).readline()) |
| |
| |
| def write_wake_alarm(alarm_time, rtc_device='rtc0'): |
| """ |
| Write a value to the wake alarm |
| """ |
| f = file('/sys/class/rtc/%s/wakealarm' % rtc_device, 'w') |
| f.write('%s\n' % str(alarm_time)) |
| f.close() |
| |
| |
| def set_wake_alarm(alarm_time, rtc_device='rtc0'): |
| """ |
| Set the hardware RTC-based wake alarm to 'alarm_time'. |
| """ |
| try: |
| write_wake_alarm(alarm_time, rtc_device) |
| except IOError as (errnum, strerror): |
| if errnum != errno.EBUSY: |
| raise |
| write_wake_alarm('clear', rtc_device) |
| write_wake_alarm(alarm_time, rtc_device) |