ussdd support
authorkibergus <kibergus@gmail.com>
Tue, 8 Jun 2010 18:27:57 +0000 (18:27 +0000)
committerkibergus <kibergus@gmail.com>
Tue, 8 Jun 2010 18:27:57 +0000 (18:27 +0000)
git-svn-id: file:///svnroot/ussd-widget/trunk@31 d197f4d6-dc93-42ad-8354-0da1f58e353f

ussd-common/src/usr/bin/ussdquery.py

index 2a94af7..2705dad 100755 (executable)
@@ -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: