import time

from modem import quit, Modem

try:
    modem = Modem("/dev/ttyUSB0")

    #test that modem is there
    print "INFO: check modem's presence"
    modem.send('AT')
    if modem.wait().ret != True:
        print "ERROR: no modem?"
        quit(1)

    #first deactivate
    print "INFO: deactivate the modem"
    modem.send('AT+CFUN=0')
    if modem.wait().ret != True:
        print "ERROR: failed deactivating the modem"
        quit(1)

    #activate the modem
    print "INFO: activate the modem"
    modem.send('AT+CFUN=1')
    if modem.wait().ret != True:
        print "ERROR: failed asking modem for activation"
        quit(1)

    #wait for modem to be connected
    #timeout after one minute
    print "INFO: wait for modem to be connected (timeout: one minute)"
    start_time = time.time()
    while True:
        modem.send('AT+CGATT?')
        r = modem.wait()
        if r.ret != True:
            print "ERROR: failed checking attachment status of modem"
            quit(1)
        if "+CGATT: 1" in r.data:
            break
        if not "CGATT: 0" in r.data:
            print "ERROR: bad data when checking attachment status of modem"
            quit(1)
        time.sleep(0.1)
        if time.time() > start_time + 60:
            print "ERROR: modem not connected after one minute, close modem"
            modem.send('AT+CFUN=0')
            r = modem.wait()
            if r.ret != True:
                print "ERROR: closing modem failed"
            quit(1)

    print "INFO: modem is connected"

except BaseException, e:
    print "ERROR: " + str(e)
    quit(1)

quit(0)