Import: python PoC
authorAlex Badea <vamposdecampos@gmail.com>
Mon, 7 Jun 2010 18:51:43 +0000 (21:51 +0300)
committerAlex Badea <vamposdecampos@gmail.com>
Mon, 7 Jun 2010 18:51:43 +0000 (21:51 +0300)
python/espeaktime.py [new file with mode: 0755]

diff --git a/python/espeaktime.py b/python/espeaktime.py
new file mode 100755 (executable)
index 0000000..ee6d5a2
--- /dev/null
@@ -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()