X-Git-Url: http://git.maemo.org/git/?p=ussd-widget;a=blobdiff_plain;f=ussd4all%2Fussdquery%2Fussdquery.py;h=d580e85309db2f7946f76d30f0be28db0267b93f;hp=fa38dec2b062a4c7c67dd90d349e94e623f73a0d;hb=a2eeccf346c63ef51db78ba34db166448a31c7b0;hpb=f0af533e4df5aa2d2387613bd387743dc884be06 diff --git a/ussd4all/ussdquery/ussdquery.py b/ussd4all/ussdquery/ussdquery.py index fa38dec..d580e85 100755 --- a/ussd4all/ussdquery/ussdquery.py +++ b/ussd4all/ussdquery/ussdquery.py @@ -56,6 +56,17 @@ def release_lock (): fcntl.flock(lockf,fcntl.LOCK_UN) lockf.close() +def ensure_modem_listening (modem): + # We try to ger response for about 2 seconds + for i in range(20): + modem.send('at junk\r'); + index = modem.expect (['ERROR\r', pexpect.TIMEOUT], 0.1); + if index == 0: + modem.send('at\r'); + index = modem.expect (['OK\r'], 1); + return; + raise + def init_modem(modem): # We have only one modem, simultaneous acces wouldn't bring anything good gain_lock() @@ -65,21 +76,12 @@ def init_modem(modem): if modem == None : # OK response should be recieved shortly modem = pexpect.spawn('pnatd', [], 2) - # FIXME This is a dirty hack. A better solution needed - time.sleep(0.5) - try : - modem.send('at\r'); - # Read our "at" command - modem.readline(); - # Read OK response - response = modem.readline().strip() - except pexpect.TIMEOUT: - modem.kill(9) - modem = None - response = "" - if response != "OK" : - time.sleep(0.5) - init_retry -= 1 + try : + ensure_modem_listening (modem); + except : + modem.kill(9); + modem = None; + response = ""; else: try: # Switch output encoding to GSM default encoding