Ejemplo n.º 1
0
	def __init__(self, tty_device_file, pin):
		try:
			self.MODEM = humod.Modem(tty_device_file, tty_device_file)
			signal.signal(signal.SIGALRM, self._handler_timeout_signal)
			signal.alarm(10)
			self.MODEM.show_model()
			signal.alarm(0)
		except:
			self.handle_error(self.ERR_MSG_INIT_MODEM)

		try:
			self.CMD_CPIN = Command(self.MODEM, self.CMD_STR_CPIN)
			pin_status = self.CMD_CPIN.get()[0]
		except:
			self.handle_error(self.ERR_MSG_PIN_QUERY)

		if 'IM PUK' in pin_status:
			self.handle_error(self.ERR_MSG_PUK)

		if 'IM PIN' in pin_status:
			if pin == '':
				self.handle_error(self.ERR_MSG_PIN_EMPTY)

			try:
				self.CMD_CPIN.set(pin)
			except:
				self.handle_error(self.ERR_MSG_PIN_APPLY)

			try:
				pin_status = self.CMD_CPIN.get()[0]
			except:
				self.handle_error(self.ERR_MSG_PIN_QUERY)

			if 'EADY' not in pin_status:
				self.handle_error(self.ERR_MSG_PIN_WRONG)
				return

		if 'EADY' not in pin_status:
			self.handle_error(self.ERR_MSG_PIN_UNDEFINED)

		try:
			self.CMD_CPOS = Command(self.MODEM, self.CMD_STR_COPS)
			self.CMD_CPOS.set(0)
		except:
			self.handle_error(self.ERR_MSG_CMD_CPOS_FAILED)

		time.sleep(10)

		try:
			self.CMD_CSCS = Command(self.MODEM, self.CMD_STR_CSCS)
			self.CMD_CSCS.set('"GSM"')
		except:
			self.handle_error(self.ERR_MSG_SET_CHARACTER_SET_FAILED)

		try:
			self.MODEM.enable_textmode(True)
		except:
			self.handle_error(self.ERR_MSG_SET_TEXTMODE_FAILED)
Ejemplo n.º 2
0
def syncModemTime():
    #xtraGps = Command(modem, '+CGPSXE')
    #xtraSetup = Command(modem, '+CGPSXD')
    setServerCmd = Command(modem, '+CHTPSERV')
    setServerCmd.set('\"ADD\", "www.google.com", 80, 1')
    timeSync = Command(modem, '+CHTPUPDATE')
    timeSync.run()
Ejemplo n.º 3
0
    def __init__(self, tty_device_file, pin):
        try:
            self.MODEM = humod.Modem(tty_device_file, tty_device_file)
            signal.signal(signal.SIGALRM, self._handler_timeout_signal)
            signal.alarm(10)
            self.MODEM.show_model()
            signal.alarm(0)
        except:
            self.handle_error(self.ERR_MSG_INIT_MODEM)

        try:
            self.CMD_CPIN = Command(self.MODEM, self.CMD_STR_CPIN)
            pin_status = self.CMD_CPIN.get()[0]
        except:
            self.handle_error(self.ERR_MSG_PIN_QUERY)

        if 'IM PUK' in pin_status:
            self.handle_error(self.ERR_MSG_PUK)

        if 'IM PIN' in pin_status:
            if pin == '':
                self.handle_error(self.ERR_MSG_PIN_EMPTY)

            try:
                self.CMD_CPIN.set(pin)
            except:
                self.handle_error(self.ERR_MSG_PIN_APPLY)

            try:
                pin_status = self.CMD_CPIN.get()[0]
            except:
                self.handle_error(self.ERR_MSG_PIN_QUERY)

            if 'EADY' not in pin_status:
                self.handle_error(self.ERR_MSG_PIN_WRONG)
                return

        if 'EADY' not in pin_status:
            self.handle_error(self.ERR_MSG_PIN_UNDEFINED)

        try:
            self.CMD_CPOS = Command(self.MODEM, self.CMD_STR_COPS)
            self.CMD_CPOS.set(0)
        except:
            self.handle_error(self.ERR_MSG_CMD_CPOS_FAILED)

        time.sleep(10)

        try:
            self.CMD_CSCS = Command(self.MODEM, self.CMD_STR_CSCS)
            self.CMD_CSCS.set('"GSM"')
        except:
            self.handle_error(self.ERR_MSG_SET_CHARACTER_SET_FAILED)

        try:
            self.MODEM.enable_textmode(True)
        except:
            self.handle_error(self.ERR_MSG_SET_TEXTMODE_FAILED)
Ejemplo n.º 4
0
class ModemManager():
	MODEM = None
	CMD_CPIN = None
	CMD_CPOS = None
	CMD_CSCS = None
	CMD_STR_CPIN = '+CPIN' # PIN management
	CMD_STR_COPS = '+COPS' # Operator management
	CMD_STR_CSCS = '+CSCS' # Character set management
	ERR_MSG_INIT_MODEM = 'ERROR: Failed to initialze modem'
	ERR_MSG_PUK = 'ERROR: SIM requires PUK code'
	ERR_MSG_PIN_EMPTY = 'ERROR: SIM requires PIN but no PIN provided'
	ERR_MSG_PIN_QUERY = 'ERROR: SIM query for PIN failed'
	ERR_MSG_PIN_APPLY = 'ERROR: Failed to apply PIN'
	ERR_MSG_PIN_WRONG = 'ERROR: Wrong PIN supplied'
	ERR_MSG_PIN_UNDEFINED = 'ERROR: Undefined PIN status'
	ERR_MSG_CMD_CPOS_FAILED = 'ERROR: Setting auto search mode failed'
	ERR_MSG_SET_TEXTMODE_FAILED = 'ERROR: Setting text mode failed'
	ERR_MSG_SET_CHARACTER_SET_FAILED = 'ERROR: Failed to setup character set of the modem'
	ERR_MSG_NEW_SMS_CB_FAILED = 'ERROR: Failed register callback for new SMS'

	def __init__(self, tty_device_file, pin):
		try:
			self.MODEM = humod.Modem(tty_device_file, tty_device_file)
			signal.signal(signal.SIGALRM, self._handler_timeout_signal)
			signal.alarm(10)
			self.MODEM.show_model()
			signal.alarm(0)
		except:
			self.handle_error(self.ERR_MSG_INIT_MODEM)

		try:
			self.CMD_CPIN = Command(self.MODEM, self.CMD_STR_CPIN)
			pin_status = self.CMD_CPIN.get()[0]
		except:
			self.handle_error(self.ERR_MSG_PIN_QUERY)

		if 'IM PUK' in pin_status:
			self.handle_error(self.ERR_MSG_PUK)

		if 'IM PIN' in pin_status:
			if pin == '':
				self.handle_error(self.ERR_MSG_PIN_EMPTY)

			try:
				self.CMD_CPIN.set(pin)
			except:
				self.handle_error(self.ERR_MSG_PIN_APPLY)

			try:
				pin_status = self.CMD_CPIN.get()[0]
			except:
				self.handle_error(self.ERR_MSG_PIN_QUERY)

			if 'EADY' not in pin_status:
				self.handle_error(self.ERR_MSG_PIN_WRONG)
				return

		if 'EADY' not in pin_status:
			self.handle_error(self.ERR_MSG_PIN_UNDEFINED)

		try:
			self.CMD_CPOS = Command(self.MODEM, self.CMD_STR_COPS)
			self.CMD_CPOS.set(0)
		except:
			self.handle_error(self.ERR_MSG_CMD_CPOS_FAILED)

		time.sleep(10)

		try:
			self.CMD_CSCS = Command(self.MODEM, self.CMD_STR_CSCS)
			self.CMD_CSCS.set('"GSM"')
		except:
			self.handle_error(self.ERR_MSG_SET_CHARACTER_SET_FAILED)

		try:
			self.MODEM.enable_textmode(True)
		except:
			self.handle_error(self.ERR_MSG_SET_TEXTMODE_FAILED)

	def _handler_timeout_signal(self, signal_number, frame):
		raise Exception

	def handle_error(self, message):
		print message
		exit(1)

	def send_sms(self, number, message):
		try:
			self.CMD_CSCS.set('"GSM"')
			self.MODEM.sms_send(number, message)
		except:
			print 'ERROR: Failed to send SMS'

	def register_new_sms_callback(self, callback):
		try:
			self.MODEM.enable_nmi(True)
			self.MODEM.prober.start([(humod.actions.PATTERN['new sms'], callback)])
		except:
			self.handle_error(self.ERR_MSG_NEW_SMS_CB_FAILED)

	def stop_prober(self):
		self.MODEM.prober.stop()
Ejemplo n.º 5
0
class ModemManager():
    MODEM = None
    CMD_CPIN = None
    CMD_CPOS = None
    CMD_CSCS = None
    CMD_STR_CPIN = '+CPIN'  # PIN management
    CMD_STR_COPS = '+COPS'  # Operator management
    CMD_STR_CSCS = '+CSCS'  # Character set management
    ERR_MSG_INIT_MODEM = 'ERROR: Failed to initialze modem'
    ERR_MSG_PUK = 'ERROR: SIM requires PUK code'
    ERR_MSG_PIN_EMPTY = 'ERROR: SIM requires PIN but no PIN provided'
    ERR_MSG_PIN_QUERY = 'ERROR: SIM query for PIN failed'
    ERR_MSG_PIN_APPLY = 'ERROR: Failed to apply PIN'
    ERR_MSG_PIN_WRONG = 'ERROR: Wrong PIN supplied'
    ERR_MSG_PIN_UNDEFINED = 'ERROR: Undefined PIN status'
    ERR_MSG_CMD_CPOS_FAILED = 'ERROR: Setting auto search mode failed'
    ERR_MSG_SET_TEXTMODE_FAILED = 'ERROR: Setting text mode failed'
    ERR_MSG_SET_CHARACTER_SET_FAILED = 'ERROR: Failed to setup character set of the modem'
    ERR_MSG_NEW_SMS_CB_FAILED = 'ERROR: Failed register callback for new SMS'

    def __init__(self, tty_device_file, pin):
        try:
            self.MODEM = humod.Modem(tty_device_file, tty_device_file)
            signal.signal(signal.SIGALRM, self._handler_timeout_signal)
            signal.alarm(10)
            self.MODEM.show_model()
            signal.alarm(0)
        except:
            self.handle_error(self.ERR_MSG_INIT_MODEM)

        try:
            self.CMD_CPIN = Command(self.MODEM, self.CMD_STR_CPIN)
            pin_status = self.CMD_CPIN.get()[0]
        except:
            self.handle_error(self.ERR_MSG_PIN_QUERY)

        if 'IM PUK' in pin_status:
            self.handle_error(self.ERR_MSG_PUK)

        if 'IM PIN' in pin_status:
            if pin == '':
                self.handle_error(self.ERR_MSG_PIN_EMPTY)

            try:
                self.CMD_CPIN.set(pin)
            except:
                self.handle_error(self.ERR_MSG_PIN_APPLY)

            try:
                pin_status = self.CMD_CPIN.get()[0]
            except:
                self.handle_error(self.ERR_MSG_PIN_QUERY)

            if 'EADY' not in pin_status:
                self.handle_error(self.ERR_MSG_PIN_WRONG)
                return

        if 'EADY' not in pin_status:
            self.handle_error(self.ERR_MSG_PIN_UNDEFINED)

        try:
            self.CMD_CPOS = Command(self.MODEM, self.CMD_STR_COPS)
            self.CMD_CPOS.set(0)
        except:
            self.handle_error(self.ERR_MSG_CMD_CPOS_FAILED)

        time.sleep(10)

        try:
            self.CMD_CSCS = Command(self.MODEM, self.CMD_STR_CSCS)
            self.CMD_CSCS.set('"GSM"')
        except:
            self.handle_error(self.ERR_MSG_SET_CHARACTER_SET_FAILED)

        try:
            self.MODEM.enable_textmode(True)
        except:
            self.handle_error(self.ERR_MSG_SET_TEXTMODE_FAILED)

    def _handler_timeout_signal(self, signal_number, frame):
        raise Exception

    def handle_error(self, message):
        print message
        exit(1)

    def send_sms(self, number, message):
        try:
            self.CMD_CSCS.set('"GSM"')
            self.MODEM.sms_send(number, message)
        except:
            print 'ERROR: Failed to send SMS'

    def register_new_sms_callback(self, callback):
        try:
            self.MODEM.enable_nmi(True)
            self.MODEM.prober.start([(humod.actions.PATTERN['new sms'],
                                      callback)])
        except:
            self.handle_error(self.ERR_MSG_NEW_SMS_CB_FAILED)

    def stop_prober(self):
        self.MODEM.prober.stop()
Ejemplo n.º 6
0
def getTime():
    timeCmd = Command(modem, '+CCLK')
    return timeCmd.get()
Ejemplo n.º 7
0
def checkApn():
    apnCmd = Command(modem, '+CGSOCKCONT')
    return apnCmd.get()[0]
Ejemplo n.º 8
0
def enableAutoReporting():
    autoCmd = Command(modem, '+AUTOCSQ')
    autoCmd.set("1,0")
    print('GPS auto reporting enabled')
Ejemplo n.º 9
0
def disableGps():
    gpsConf = Command(modem, '+CGPS')
    gpsConf.set("0,2")
    time.sleep(0.2)
    print('GPS disabled')
Ejemplo n.º 10
0
def enableGps():
    gpsConf = Command(modem, '+CGPS')
    gpsNmeaCmd = Command(modem, '+CGPSINFOCFG')
    settingStr = "%s,1" % str(gpsUpdateRate)

    if getGpsConf()[0]:
        print('GPS is already running')
        gpsConf.set("0,2")
        time.sleep(1)
        gpsNmeaCmd.set(settingStr)
        time.sleep(1)
        gpsConf.set("1,2")
    else:
        gpsNmeaCmd.set(settingStr)
        time.sleep(0.2)
        gpsConf.set("1,2")
        print('GPS enabled')
Ejemplo n.º 11
0
def getGpsConf():
    gpsConf = Command(modem, '+CGPS')
    return gpsConf.get()[0].encode('UTF8').split(',', 1)