From: Alex Badea Date: Mon, 7 Jun 2010 18:51:43 +0000 (+0300) Subject: Import: python PoC X-Git-Url: http://git.maemo.org/git/?p=espeaktime;a=commitdiff_plain;h=3790c5cee8ffd8efc124a46cdefebefd45fac076;ds=sidebyside Import: python PoC --- diff --git a/python/espeaktime.py b/python/espeaktime.py new file mode 100755 index 0000000..ee6d5a2 --- /dev/null +++ b/python/espeaktime.py @@ -0,0 +1,80 @@ +#!/usr/bin/python + +""" + +signal sender=:1.12 -> dest=(null destination) serial=1208 path=/org/freedesktop/Hal/devices/computer_logicaldev_input; interface=org.freedesktop.Hal.Device; member=Condition + string "ButtonPressed" + string "power" + +signal sender=:1.11 -> dest=(null destination) serial=750 path=/com/nokia/mce/signal; interface=com.nokia.mce.signal; member=display_status_ind + string "on" + +signal sender=:1.11 -> dest=(null destination) serial=731 path=/com/nokia/mce/signal; interface=com.nokia.mce.signal; member=tklock_mode_ind + string "locked" +""" + +# mce/dbus-names.h +MCE_SERVICE = "com.nokia.mce" +MCE_REQUEST_IF = "com.nokia.mce.request" +MCE_SIGNAL_IF = "com.nokia.mce.signal" +MCE_REQUEST_PATH = "/com/nokia/mce/request" +MCE_SIGNAL_PATH = "/com/nokia/mce/signal" +MCE_TKLOCK_MODE_SIG = "tklock_mode_ind" +MCE_DISPLAY_SIG = "display_status_ind" + +import gobject +import dbus +import dbus.mainloop.glib +import time +import os + +class SpeakTimeController(object): + def __init__(self): + bus = dbus.SystemBus() + mce_req = dbus.Interface( + bus.get_object(MCE_SERVICE, MCE_REQUEST_PATH), + dbus_interface=MCE_REQUEST_IF) + mce = dbus.Interface( + bus.get_object(MCE_SERVICE, MCE_SIGNAL_PATH), + dbus_interface=MCE_SIGNAL_IF) + hal = dbus.Interface( + bus.get_object("org.freedesktop.Hal", "/org/freedesktop/Hal/devices/computer_logicaldev_input"), + dbus_interface="org.freedesktop.Hal.Device") + + self.sig_display_status(mce_req.get_display_status()) + self.sig_tklock_mode(mce_req.get_tklock_mode()) + + mce.connect_to_signal(MCE_DISPLAY_SIG, self.sig_display_status) + mce.connect_to_signal(MCE_TKLOCK_MODE_SIG, self.sig_tklock_mode) + hal.connect_to_signal("Condition", self.sig_condition) + + + + def sig_display_status(self, status): + print "display status [%s]" % status + self.display_status = status + + def sig_tklock_mode(self, mode): + print "lock mode [%s]" % mode + self.tklock_mode = mode + + def sig_condition(self, name, *args): + print "condition: name=[%s] args=[%r]" % (name, args) + if name == 'ButtonPressed' and args[0] == 'power': + print "power button" + if self.display_status == "on" and self.tklock_mode == "locked": + s = time.strftime("%H:%M") + print "speak: [%s]" % s + print os.system("espeak \"%s\"" % s) + + +def main(): + dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + + ctrl = SpeakTimeController() + + print "loop" + mainloop = gobject.MainLoop() + mainloop.run() + +main()