def send_pin(self, pin): """ Sends ``pin`` to authenticate We need to encode the PIN in the correct way, but also wait a little, as Ericsson devices return straight away on unlock but an immediate call to +CPIN? will still show the device as locked. """ from core.startup import attach_to_serial_port d = attach_to_serial_port(self.device) def _get_charset(_): if hasattr(self.device, 'sim') and \ hasattr(self.device.sim, 'charset'): return defer.succeed(self.device.sim.charset) else: return self.get_charset() d.addCallback(_get_charset) def _send_pin(charset, pin): if 'UCS2' in charset: pin = pack_ucs2_bytes(pin) return super(EricssonWrapper, self).send_pin(pin) d.addCallback(_send_pin, pin) d.addCallback(lambda x: deferLater(reactor, 1, lambda y: y, x)) return d
def do_next(self): log.msg("%s: transition to get_pin_status mode...." % self) from core.startup import attach_to_serial_port d = attach_to_serial_port(self.device) d.addCallback(lambda _: self.device.sconn.set_error_level(1)) d.addCallback(lambda _: self.device.sconn.check_pin()) d.addCallback(self.check_pin_cb) d.addErrback(self.pin_required_eb) d.addErrback(self.puk_required_eb) d.addErrback(self.sim_failure_eb) d.addErrback(self.sim_busy_eb) d.addErrback(self.sim_no_present_eb)