Hi Philippe,

On 06/27/2012 10:26 AM, Philippe Nunes wrote:
---
  test/test-ussd |   60 ++++++++++++++++++++++++++++++++++++++------------------
  1 file changed, 41 insertions(+), 19 deletions(-)

diff --git a/test/test-ussd b/test/test-ussd
index c21f5e3..c8099b0 100755
--- a/test/test-ussd
+++ b/test/test-ussd
@@ -9,12 +9,28 @@ import dbus.mainloop.glib

  state = None

+def clear_screen(numlines=100):
+       import os
+       if os.name == "posix":
+               os.system('clear')
+
+       elif os.name in ("nt", "dos", "ce"):
+               os.system('CLS')
+
+       else:
+               print '\n' * numlines
+
+def print_menu():
+       if state == "user-response":
+               print "Enter response (c for cancel - x for exit):"
+       elif state == "idle":
+               print "Enter USSD request (x for exit):"
+
  def ussd_notification_received(content):
        print("Network sent a Notification: " + content)

  def ussd_request_received(content):
        print("Network sent a Request: " + content)
-       ss.Cancel()

  def ussd_property_changed(name, value):
        global state
@@ -23,23 +39,27 @@ def ussd_property_changed(name, value):
        print("USSD session state is " + value)
        state = str(value)

+       print_menu()
+
  def stdin_handler(fd, condition):
-       s = os.read(fd.fileno(), 160).rstrip()
-       if not s:
-               ss.Cancel()
+       s = os.read(fd.fileno(), 182).rstrip()
+
+       if s == 'c':
+               if state == "user-response" or state == 'active':
+                       clear_screen
+                       ss.Cancel()
+       elif s == 'x':
+               sys.exit(1)
        elif state == "user-response":
+               clear_screen()
                print ss.Respond(s, timeout = 100)
        elif state == "idle":
+               clear_screen()
                print ss.Initiate(s, timeout = 100)
-       else:
-               print "Invalid state", state
+
        return True

  if __name__ == "__main__":
-       if (len(sys.argv)<  2):
-               print "Usage: %s [modem]<ussd-string>" % (sys.argv[0])
-               sys.exit(1)
-

Why are you removing this? The script should still be printing a basic usage help script even if you are adding new semantics to it.

        dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

        bus = dbus.SystemBus()
@@ -50,24 +70,26 @@ if __name__ == "__main__":
        modems = manager.GetModems()
        modem = modems[0][0]

-       if (len(sys.argv) == 2):
-               ussd = sys.argv[1]
-       else:
+       if (len(sys.argv) == 3):
                modem = sys.argv[1]
-               ussd = sys.argv[2]

        ss = dbus.Interface(bus.get_object('org.ofono', modem),
                                        'org.ofono.SupplementaryServices')

-       props = ss.GetProperties()
-       for p in props:
-               ussd_property_changed(p, props[p])
-
        ss.connect_to_signal("NotificationReceived", ussd_notification_received)
        ss.connect_to_signal("RequestReceived", ussd_request_received)
        ss.connect_to_signal("PropertyChanged", ussd_property_changed)

-       print ss.Initiate(ussd, timeout=100)
+       if (len(sys.argv)>  1):
+               if (len(sys.argv) == 2):
+                       ussd = sys.argv[1]
+               elif (len(sys.argv) == 3):
+                       ussd = sys.argv[2]
+               print ss.Initiate(ussd, timeout=100)
+       else:
+               props = ss.GetProperties()
+               for p in props:
+                       ussd_property_changed(p, props[p])

What exactly are you getting out of the else clause that isn't already handled by list-modems and monitor-ofono scripts?


        gobject.io_add_watch(sys.stdin, gobject.IO_IN, stdin_handler)


Regards,
-Denis
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to