#!/usr/bin/python
import dbus
import dbus.glib
import gobject
import time
import os
import sys

def dbg(s):
    print("%s %s" % (time.strftime("%H:%M:%S"), s))

def formatDict(d):
    return " ".join(["(%s %s)" % (i, d[i]) for i in d.keys()])

class UI:
    def __init__(self, loop):
        self.loop = loop

        bus = dbus.SystemBus()
        self.gsm_device_obj = bus.get_object("org.freesmartphone.ogsmd", "/org/freesmartphone/GSM/Device")
        self.gsm_device_iface = dbus.Interface(self.gsm_device_obj, 'org.freesmartphone.GSM.Device')
        self.gsm_sim_iface = dbus.Interface(self.gsm_device_obj, 'org.freesmartphone.GSM.SIM')
        self.gsm_network_iface = dbus.Interface(self.gsm_device_obj, 'org.freesmartphone.GSM.Network')
        self.gsm_call_iface = dbus.Interface(self.gsm_device_obj, 'org.freesmartphone.GSM.Call')

        self.usage_obj = bus.get_object("org.freesmartphone.ousaged", "/org/freesmartphone/Usage")
        self.usage_iface = dbus.Interface(self.usage_obj, "org.freesmartphone.Usage")
        
        self.cbRequestGSM(1)

    def cbRequestGSM(self, w):
        dbg("cbRequestGSM")
        self.usage_iface.RequestResource("GSM",
                                         reply_handler = self.cbRequestReply,
                                         error_handler = lambda e: (dbg("cbRequestError %s" % e), self.loop.quit))
    def cbRequestReply(self):
        dbg("cbRequestReply")
        self.usage_iface.ReleaseResource("GSM",
                                         reply_handler = self.cbReleaseReply,
                                         error_handler = lambda e: (dbg("cbReleaseError %s" % e), self.loop.quit))
    def cbReleaseReply(self):
        dbg("cbReleaseReply")
        self.loop.quit()

if __name__ == "__main__":
    loop = gobject.MainLoop()
    UI(loop)
    loop.run()
