#!/usr/bin/env python

import common
import sys

class CrashModem(common.Modem):
    def GetRegistrationState(self, *args, **kwargs):
        sys.exit(0)

common.setup()
mm = common.ModemManager(common.bus, common.OCMM)
tm0 = CrashModem(mm, '/TestModem/4')
common.cleanup(lambda: sys.exit(1))
common.run()
