# 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)