From 5bbe9211c01d0a1d3925f4bdf5b42324b57dc6c5 Mon Sep 17 00:00:00 2001 From: kibergus Date: Tue, 8 Jun 2010 18:27:57 +0000 Subject: [PATCH] ussdd support git-svn-id: file:///svnroot/ussd-widget/trunk@31 d197f4d6-dc93-42ad-8354-0da1f58e353f --- ussd-common/src/usr/bin/ussdquery.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/ussd-common/src/usr/bin/ussdquery.py b/ussd-common/src/usr/bin/ussdquery.py index 2a94af7..2705dad 100755 --- a/ussd-common/src/usr/bin/ussdquery.py +++ b/ussd-common/src/usr/bin/ussdquery.py @@ -15,6 +15,8 @@ import re import fcntl import os import stat +import dbus +import gobject # Needed for correct output of utf-8 symbols. sys.stdout=file("/dev/stdout", "wb") @@ -32,8 +34,9 @@ if len(sys.argv) == 1: "Options:\n-l language. Allowed languages: German, English, Italian, French, Spanish, Dutch, Swedish, Danish, Portuguese, Finnish, Norwegian, Greek, Turkish, Reserved1, Reserved2, Unspecified\n"+\ "-r retry count. 0 default. Use -1 for infinite.\n-f If specified, errors, which occur on last query are threated as fatal\n"+\ "-t timeout in seconds. Default 30. Timeout is considered to be critical error because you can't be sure answer for what request was returned.\n"+\ -"-d delimeter. Default is '\\n> '"+\ +"-d delimeter. Default is '\\n> \n'"+\ "-m gain modem lock imidiately '"+\ +"-s show GUI message box on last reply"+\ "For USSD menu navigation divide USSD number via spacebars for every next menu selection. Type exit in interactive mode to exit." sys.exit() @@ -112,6 +115,7 @@ allow_last_error = True delimiter = "\n> " language = 15 timeout = 30 +show_qussd = False if sys.argv[1] == "interactive": number = "interactive" @@ -145,6 +149,9 @@ while arg < len(sys.argv)-1: if sys.argv[arg] == "-f": allow_last_error = False continue + if sys.argv[arg] == "-s": + show_qussd = True + continue if sys.argv[arg] == "-m": modem = init_modem(modem) continue @@ -165,8 +172,7 @@ while arg < len(sys.argv)-1: elif sys.argv[arg] == "Swedish": language = 6 elif sys.argv[arg] == "Danish": - lang std::cerr << reply.data(); -uage = 7 + language = 7 elif sys.argv[arg] == "Portuguese": language = 8 elif sys.argv[arg] == "Finnish": @@ -226,6 +232,10 @@ if retry == -1: else: retry_forever = False +bus = dbus.SystemBus() +ussdd = bus.get_object("su.kibergus.ussdd", "/su/kibergus/ussdd") +ussdd_int = dbus.Interface(ussdd, "su.kibergus.ussdd") + # Now we are ready to send commands stage = 0 @@ -254,6 +264,9 @@ while number == "interactive" or stage < len(number): break try : + if number != "interactive" and not show_qussd or stage != len(number)-1: + ussdd_int.skip_next() + modem.send('at+cusd=1,"'+cnumber+'",'+str(language)+'\r') # Read our query echoed back modem.readline() @@ -266,11 +279,13 @@ while number == "interactive" or stage < len(number): except pexpect.TIMEOUT: print >> sys.stderr, "Timeout. Modem didn't reply." close_modem (modem) + ussdd_int.show_next() sys.exit (-2) if replystring.strip() == "ERROR" : retry -= 1 print >> sys.stderr, "Modem returned ERROR. Query not executed." + ussdd_int.show_next() continue try: -- 1.7.9.5