import fcntl
import os
import stat
+import dbus
+import gobject
# Needed for correct output of utf-8 symbols.
sys.stdout=file("/dev/stdout", "wb")
"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()
delimiter = "\n> "
language = 15
timeout = 30
+show_qussd = False
if sys.argv[1] == "interactive":
number = "interactive"
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
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":
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
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()
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: