#!/usr/bin/env python

import common
import os
import sys
import time

class TimeoutModem(common.Modem):
    def ConnectDone(self, old, new, why):
        time.sleep(15)
        sys.exit(0)

def setup():
    os.system('/usr/local/lib/flimflam/test/connect-service cellular 2>/dev/null &')
    return 0

common.setup(setup)
common.cleanup(lambda: sys.exit(1), after=30)
mm = common.ModemManager(common.bus, common.OCMM)
tm0 = TimeoutModem(mm, '/TestModem/0')
common.run()
