Initial import
authorAntonio Ospite <ospite@studenti.unina.it>
Wed, 23 Jun 2010 12:42:22 +0000 (14:42 +0200)
committerAntonio Ospite <ospite@studenti.unina.it>
Wed, 23 Jun 2010 12:42:22 +0000 (14:42 +0200)
API.txt [new file with mode: 0644]
fso-auth.py [new file with mode: 0755]
fso-listen-for-calls.py [new file with mode: 0755]
fso-make-call.py [new file with mode: 0755]
fso-print-info.py [new file with mode: 0755]

diff --git a/API.txt b/API.txt
new file mode 100644 (file)
index 0000000..c29a4f9
--- /dev/null
+++ b/API.txt
@@ -0,0 +1,102 @@
+[METHOD]    org.freesmartphone.Info.GetInfo()
+[METHOD]    org.freesmartphone.GSM.Call.Activate( i:id )
+[METHOD]    org.freesmartphone.GSM.Call.ActivateConference( i:id )
+[METHOD]    org.freesmartphone.GSM.Call.Emergency( s:number )
+[METHOD]    org.freesmartphone.GSM.Call.HoldActive()
+[METHOD]    org.freesmartphone.GSM.Call.Initiate( s:number, s:type )
+[METHOD]    org.freesmartphone.GSM.Call.Join()
+[METHOD]    org.freesmartphone.GSM.Call.ListCalls()
+[METHOD]    org.freesmartphone.GSM.Call.Release( i:id )
+[METHOD]    org.freesmartphone.GSM.Call.ReleaseAll()
+[METHOD]    org.freesmartphone.GSM.Call.ReleaseHeld()
+[METHOD]    org.freesmartphone.GSM.Call.SendDtmf( s:tones )
+[METHOD]    org.freesmartphone.GSM.Call.Transfer( s:number )
+[SIGNAL]    org.freesmartphone.GSM.Call.CallStatus( i:id, s:status, a{sv}:properties )
+[METHOD]    org.freedesktop.DBus.Properties.Get( s:interface, s:propname )
+[METHOD]    org.freedesktop.DBus.Properties.GetAll( s:interface )
+[METHOD]    org.freedesktop.DBus.Properties.Set( s:interface, s:propname, v:value )
+[METHOD]    org.freedesktop.DBus.Introspectable.Introspect()
+[METHOD]    org.freesmartphone.GSM.Device.GetDeviceStatus()
+[METHOD]    org.freesmartphone.GSM.Device.GetFeatures()
+[METHOD]    org.freesmartphone.GSM.Device.GetFunctionality()
+[METHOD]    org.freesmartphone.GSM.Device.GetMicrophoneMuted()
+[METHOD]    org.freesmartphone.GSM.Device.GetSpeakerVolume()
+[METHOD]    org.freesmartphone.GSM.Device.SetFunctionality( s:level, b:autoregister, s:pin )
+[METHOD]    org.freesmartphone.GSM.Device.SetMicrophoneMuted( b:muted )
+[METHOD]    org.freesmartphone.GSM.Device.SetSpeakerVolume( i:volume )
+[SIGNAL]    org.freesmartphone.GSM.Device.DeviceStatus( s:status )
+[SIGNAL]    org.freesmartphone.GSM.Device.KeypadEvent( s:name, b:pressed )
+[METHOD]    org.freesmartphone.GSM.SMS.GetSizeForTextMessage( s:contents )
+[METHOD]    org.freesmartphone.GSM.SMS.RetrieveTextMessages()
+[METHOD]    org.freesmartphone.GSM.SMS.SendTextMessage( s:recipient_number, s:contents, b:report )
+[SIGNAL]    org.freesmartphone.GSM.SMS.IncomingMessageReport( i:reference, s:status, s:sender_number, s:contents )
+[SIGNAL]    org.freesmartphone.GSM.SMS.IncomingTextMessage( s:number, s:timestamp, s:contents )
+[METHOD]    org.freesmartphone.GSM.SIM.ChangeAuthCode( s:old_pin, s:new_pin )
+[METHOD]    org.freesmartphone.GSM.SIM.DeleteEntry( s:category, i:index )
+[METHOD]    org.freesmartphone.GSM.SIM.DeleteMessage( i:index )
+[METHOD]    org.freesmartphone.GSM.SIM.GetAuthCodeRequired()
+[METHOD]    org.freesmartphone.GSM.SIM.GetAuthStatus()
+[METHOD]    org.freesmartphone.GSM.SIM.GetHomeZoneParameters()
+[METHOD]    org.freesmartphone.GSM.SIM.GetPhonebookInfo( s:category )
+[METHOD]    org.freesmartphone.GSM.SIM.GetServiceCenterNumber()
+[METHOD]    org.freesmartphone.GSM.SIM.GetSimInfo()
+[METHOD]    org.freesmartphone.GSM.SIM.RetrieveMessage( i:index )
+[METHOD]    org.freesmartphone.GSM.SIM.RetrievePhonebook( s:category, i:mindex, i:maxdex )
+[METHOD]    org.freesmartphone.GSM.SIM.SendAuthCode( s:pin )
+[METHOD]    org.freesmartphone.GSM.SIM.SendGenericSimCommand( s:command )
+[METHOD]    org.freesmartphone.GSM.SIM.SendRestrictedSimCommand( i:command, i:fileid, i:p1, i:p2, i:p3, s:data )
+[METHOD]    org.freesmartphone.GSM.SIM.SendStoredMessage( i:index )
+[METHOD]    org.freesmartphone.GSM.SIM.SetAuthCodeRequired( b:check, s:pin )
+[METHOD]    org.freesmartphone.GSM.SIM.SetServiceCenterNumber( s:number )
+[METHOD]    org.freesmartphone.GSM.SIM.StoreEntry( s:category, i:index, s:name, s:number )
+[METHOD]    org.freesmartphone.GSM.SIM.StoreMessage( s:recipient_number, s:contents, a{sv}:properties )
+[METHOD]    org.freesmartphone.GSM.SIM.Unlock( s:puk, s:new_pin )
+[SIGNAL]    org.freesmartphone.GSM.SIM.AuthStatus( s:status )
+[SIGNAL]    org.freesmartphone.GSM.SIM.IncomingMessage( i:index )
+[METHOD]    org.freesmartphone.GSM.HZ.GetHomeZoneStatus()
+[METHOD]    org.freesmartphone.GSM.HZ.GetKnownHomeZones()
+[SIGNAL]    org.freesmartphone.GSM.HZ.HomeZoneStatus( s:name )
+[METHOD]    org.freesmartphone.GSM.Network.DisableCallForwarding( s:reason, s:class_ )
+[METHOD]    org.freesmartphone.GSM.Network.EnableCallForwarding( s:reason, s:class_, s:number, i:timeout )
+[METHOD]    org.freesmartphone.GSM.Network.GetCallForwarding( s:reason )
+[METHOD]    org.freesmartphone.GSM.Network.GetCallingIdentification()
+[METHOD]    org.freesmartphone.GSM.Network.GetSignalStrength()
+[METHOD]    org.freesmartphone.GSM.Network.GetStatus()
+[METHOD]    org.freesmartphone.GSM.Network.GetTimeReport()
+[METHOD]    org.freesmartphone.GSM.Network.ListProviders()
+[METHOD]    org.freesmartphone.GSM.Network.Register()
+[METHOD]    org.freesmartphone.GSM.Network.RegisterWithProvider( s:operator_code )
+[METHOD]    org.freesmartphone.GSM.Network.SendUssdRequest( s:request )
+[METHOD]    org.freesmartphone.GSM.Network.SetCallingIdentification( s:status )
+[METHOD]    org.freesmartphone.GSM.Network.Unregister()
+[SIGNAL]    org.freesmartphone.GSM.Network.CipherStatus( s:telephony, s:pdp )
+[SIGNAL]    org.freesmartphone.GSM.Network.IncomingUssd( s:mode, s:message_ )
+[SIGNAL]    org.freesmartphone.GSM.Network.SignalStrength( i:signal_strength )
+[SIGNAL]    org.freesmartphone.GSM.Network.Status( a{sv}:status )
+[SIGNAL]    org.freesmartphone.GSM.Network.TimeReport( i:time, i:zone )
+[METHOD]    org.freesmartphone.GSM.Debug.DebugCommand( s:command, s:channel )
+[METHOD]    org.freesmartphone.GSM.Debug.DebugInjectResponse( s:response, s:channel )
+[METHOD]    org.freesmartphone.GSM.Debug.DebugPing()
+[SIGNAL]    org.freesmartphone.GSM.Debug.DebugStatus( a{ss}:channels )
+[METHOD]    org.freesmartphone.GSM.Monitor.GetNeighbourCellInformation()
+[METHOD]    org.freesmartphone.GSM.Monitor.GetServingCellInformation()
+[METHOD]    org.freesmartphone.Device.RealtimeClock.GetCurrentTime()
+[METHOD]    org.freesmartphone.Device.RealtimeClock.GetWakeupTime()
+[METHOD]    org.freesmartphone.Device.RealtimeClock.SetCurrentTime( i:time )
+[METHOD]    org.freesmartphone.Device.RealtimeClock.SetWakeupTime( i:time )
+[SIGNAL]    org.freesmartphone.Device.RealtimeClock.Alarm( i:time )
+[SIGNAL]    org.freesmartphone.Device.RealtimeClock.WakeupTimeChanged( i:time )
+[METHOD]    org.freesmartphone.Device.PowerSupply.GetCapacity()
+[METHOD]    org.freesmartphone.Device.PowerSupply.GetPowerStatus()
+[SIGNAL]    org.freesmartphone.Device.PowerSupply.Capacity( i:energy )
+[SIGNAL]    org.freesmartphone.Device.PowerSupply.PowerStatus( s:status )
+[METHOD]    org.freesmartphone.GSM.CB.GetCellBroadcastSubscriptions()
+[METHOD]    org.freesmartphone.GSM.CB.SetCellBroadcastSubscriptions( s:channels )
+[SIGNAL]    org.freesmartphone.GSM.CB.IncomingCellBroadcast( s:text, s:language, a{sv}:properties )
+[METHOD]    org.freesmartphone.GSM.PDP.ActivateContext()
+[METHOD]    org.freesmartphone.GSM.PDP.DeactivateContext()
+[METHOD]    org.freesmartphone.GSM.PDP.GetContextStatus()
+[METHOD]    org.freesmartphone.GSM.PDP.GetCredentials()
+[METHOD]    org.freesmartphone.GSM.PDP.InternalStatusUpdate( s:status, a{sv}:properties )
+[METHOD]    org.freesmartphone.GSM.PDP.SetCredentials( s:apn, s:username, s:password )
+[SIGNAL]    org.freesmartphone.GSM.PDP.ContextStatus( s:status, a{sv}:properties )
diff --git a/fso-auth.py b/fso-auth.py
new file mode 100755 (executable)
index 0000000..0fc26f9
--- /dev/null
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+
+import sys
+import dbus
+
+def fso_auth(pin):
+    bus = dbus.SystemBus()
+
+    usage_obj = bus.get_object("org.freesmartphone.ousaged", "/org/freesmartphone/Usage")
+    usage_iface = dbus.Interface(usage_obj, "org.freesmartphone.Usage")
+    usage_iface.RequestResource("GSM")
+
+    gsm_device_obj = bus.get_object("org.freesmartphone.ogsmd", "/org/freesmartphone/GSM/Device")
+    gsm_sim_iface = dbus.Interface(gsm_device_obj, "org.freesmartphone.GSM.SIM")
+
+    if gsm_sim_iface.GetAuthStatus()  == 'SIM PIN':
+        gsm_sim_iface.SendAuthCode(pin)
+        if gsm_sim_iface.GetAuthStatus() == 'READY':
+            print "OK"
+
+    usage_iface.ReleaseResource("GSM")
+
+if __name__ == "__main__":
+
+    if len(sys.argv) != 2:
+        sys.stderr.write("usage: %s <pin>\n")
+        sys.exit(1)
+
+    pin = sys.argv[1]
+    fso_auth(pin)
diff --git a/fso-listen-for-calls.py b/fso-listen-for-calls.py
new file mode 100755 (executable)
index 0000000..a0bc8f2
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+
+import dbus
+import gobject
+
+from dbus.mainloop.glib import DBusGMainLoop
+DBusGMainLoop(set_as_default=True)
+
+def onCallStatus(sender = "", *args, **kwargs):
+    status = str(args[0])
+    if (args[1].has_key("peer")):
+        caller = str(args[1]["peer"])
+    else:
+        caller = "unknown"
+
+    print "onCallStatus"
+    print sender
+    print status
+    print caller
+    print
+
+def fso_listen_for_calls():
+    bus = dbus.SystemBus()
+
+    usage_obj = bus.get_object("org.freesmartphone.ousaged", "/org/freesmartphone/Usage")
+    usage_iface = dbus.Interface(usage_obj, "org.freesmartphone.Usage")
+    usage_iface.RequestResource("GSM")
+
+    gsm_device_obj = bus.get_object("org.freesmartphone.ogsmd", "/org/freesmartphone/GSM/Device")
+    gsm_call_iface = dbus.Interface(gsm_device_obj, "org.freesmartphone.GSM.Call")
+
+    print "Set Functionality: full"
+    gsm_network_iface.SetFunctionality("full", True, "")
+
+    gsm_call_iface.connect_to_signal('CallStatus', onCallStatus)
+
+    print "starting the main loop"
+    loop = gobject.MainLoop()
+    try:
+        loop.run()
+    except KeyboardInterrupt:
+        print "Interrupted"
+        loop.quit()
+
+    gsm_network_iface.SetFunctionality("minimal", True, "")
+    usage_iface.ReleaseResource("GSM")
+
+if __name__ == "__main__":
+    fso_listen_for_calls()
diff --git a/fso-make-call.py b/fso-make-call.py
new file mode 100755 (executable)
index 0000000..eceb5b8
--- /dev/null
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+
+import sys
+import time
+import dbus
+
+def onCallStatus(sender = "", *args, **kwargs):
+    status = str(args[0])
+    if (args[1].has_key("peer")):
+        caller = str(args[1]["peer"])
+    else:
+        caller = "unknown"
+
+    print "onCallStatus"
+    print sender
+    print status
+    print caller
+    print
+
+def fso_dial(number):
+    bus = dbus.SystemBus()
+
+    usage_obj = bus.get_object("org.freesmartphone.ousaged", "/org/freesmartphone/Usage")
+    usage_iface = dbus.Interface(usage_obj, "org.freesmartphone.Usage")
+    usage_iface.RequestResource("GSM")
+
+    gsm_device_obj = bus.get_object("org.freesmartphone.ogsmd", "/org/freesmartphone/GSM/Device")
+    gsm_device_iface = dbus.Interface(gsm_device_obj, "org.freesmartphone.GSM.Device")
+    gsm_call_iface = dbus.Interface(gsm_device_obj, "org.freesmartphone.GSM.Call")
+
+    print "Set Functionality: full"
+    gsm_device_iface.SetFunctionality("full", True, "")
+
+    gsm_call_iface.connect_to_signal('CallStatus', onCallStatus)
+
+    id = gsm_call_iface.Initiate(number, "voice")
+    print "Call id:", id
+    time.sleep(30)
+    gsm_call_iface.Release(id)
+
+    gsm_device_iface.SetFunctionality("minimal", True, "")
+    usage_iface.ReleaseResource("GSM")
+
+if __name__ == "__main__":
+
+    if len(sys.argv) != 2:
+        sys.stderr.write("usage: %s <number>\n")
+        sys.exit(1)
+        
+    number = sys.argv[1]
+    fso_dial(number)
+
diff --git a/fso-print-info.py b/fso-print-info.py
new file mode 100755 (executable)
index 0000000..355904a
--- /dev/null
@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+
+import dbus
+from pprint import pprint
+
+# Taken from telepathy-gabble:
+# http://git.collabora.co.uk/?p=user/wjt/telepathy-gabble-wjt.git;a=blob;f=tests/twisted/servicetest.py;h=476c2e171dc7d535f70fa49827892a4cfb5d8402;hb=HEAD#l265
+def unwrap(x):
+    """Hack to unwrap D-Bus values, so that they're easier to read when
+    printed."""
+
+    if isinstance(x, list):
+        return map(unwrap, x)
+
+    if isinstance(x, tuple):
+        return tuple(map(unwrap, x))
+
+    if isinstance(x, dict):
+        return dict([(unwrap(k), unwrap(v)) for k, v in x.iteritems()])
+
+    if isinstance(x, dbus.Boolean):
+        return bool(x)
+
+    for t in [unicode, str, long, int, float]:
+        if isinstance(x, t):
+            return t(x)
+
+    return x
+
+def fso_print_info():
+    # Get proxies and add signal handlers
+    bus = dbus.SystemBus()
+    usage_obj = bus.get_object("org.freesmartphone.ousaged", "/org/freesmartphone/Usage")
+    usage_iface = dbus.Interface(usage_obj, "org.freesmartphone.Usage")
+    usage_iface.RequestResource("GSM")
+
+    gsm_device_obj = bus.get_object("org.freesmartphone.ogsmd", "/org/freesmartphone/GSM/Device")
+
+    gsm_info_iface = dbus.Interface(gsm_device_obj, "org.freesmartphone.Info")
+    gsm_device_iface = dbus.Interface(gsm_device_obj, "org.freesmartphone.GSM.Device")
+    gsm_sim_iface = dbus.Interface(gsm_device_obj, "org.freesmartphone.GSM.SIM")
+    gsm_network_iface = dbus.Interface(gsm_device_obj, "org.freesmartphone.GSM.Network")
+
+    info = gsm_info_iface.GetInfo()
+    pprint(unwrap(info))
+    print
+
+    device_status = gsm_device_iface.GetDeviceStatus()
+    pprint(unwrap(device_status))
+    print
+
+    features = gsm_device_iface.GetFeatures()
+    pprint(unwrap(features))
+    print
+
+    functionality = gsm_device_iface.GetFunctionality()
+    pprint(unwrap(functionality))
+    print
+
+    auth_code = gsm_sim_iface.GetAuthCodeRequired()
+    pprint(unwrap(auth_code))
+    print
+
+    auth_status = gsm_sim_iface.GetAuthStatus()
+    pprint(unwrap(auth_status))
+    print
+
+    service_center = gsm_sim_iface.GetServiceCenterNumber()
+    pprint(unwrap(service_center))
+    print
+
+    sim_info = gsm_sim_iface.GetSimInfo()
+    pprint(unwrap(sim_info))
+    print
+
+    net_status = gsm_network_iface.GetStatus()
+    pprint(unwrap(net_status))
+    print
+
+    usage_iface.ReleaseResource("GSM")
+
+if __name__ == "__main__":
+    fso_print_info()