def main(): clf = nfc.ContactlessFrontend("usb") rdwr_options = { 'targets': ['212F', '424F'], 'on-connect': on_connect, } clf.connect(rdwr=rdwr_options)
def test_connect_rdwr_remote_is_ttf_dep(self, clf, terminate): terminate.side_effect = [False, True] target = nfc.clf.RemoteTarget('212F') target.sensf_res = HEX('01 01FE0701260cca02 0f0d23042f7783ff 12fc') clf.device.sense_ttf.return_value = target rdwr_options = {'on-connect': lambda tag: False} assert clf.connect(rdwr=rdwr_options, terminate=terminate) is None
def test_connect_rdwr_remote_is_ttf_tt3(self, clf, terminate): terminate.side_effect = [False, True] target = nfc.clf.RemoteTarget('212F') target.sensf_res = HEX('01 01010701260cca02 0f0d23042f7783ff 12fc') clf.device.sense_ttf.return_value = target rdwr_options = {'iterations': 1, 'targets': ['212F']} assert clf.connect(rdwr=rdwr_options, terminate=terminate) is True
def test_connect_rdwr_no_beep_on_connect(self, clf, terminate): terminate.side_effect = [False, True] target = nfc.clf.RemoteTarget('212F') target.sensf_res = HEX('01 01010701260cca02 ffffffffffffffff 12fc') clf.device.sense_ttf.return_value = target rdwr_options = {'iterations': 1, 'beep-on-connect': False} assert clf.connect(rdwr=rdwr_options, terminate=terminate) is True assert clf.device.turn_on_led_and_buzzer.call_count == 0
def test_connect_rdwr_on_connect_false(self, clf, terminate): terminate.side_effect = [False, False, True] target = nfc.clf.RemoteTarget('212F') target.sensf_res = HEX('01 01010701260cca02 ffffffffffffffff 12fc') clf.device.sense_ttf.return_value = target rdwr_options = {'iterations': 1, 'on-connect': lambda tag: False} tag = clf.connect(rdwr=rdwr_options, terminate=terminate) assert isinstance(tag, nfc.tag.Tag)
def test_connect_rdwr_tag_activation_fails(self, clf, terminate): terminate.side_effect = [False, True] target = nfc.clf.RemoteTarget('106B') target.sensb_res = HEX('50E8253EEC00000011008185') clf.device.sense_ttb.return_value = target clf.device.send_cmd_recv_rsp.side_effect = nfc.clf.TimeoutError rdwr_options = {'iterations': 1} assert clf.connect(rdwr=rdwr_options, terminate=terminate) is None
def test_connect_rdwr_remote_is_ttb_tt4(self, clf, terminate): terminate.side_effect = [False, True] target = nfc.clf.RemoteTarget('106B') target.sensb_res = HEX('50E8253EEC00000011008185') clf.device.sense_ttb.return_value = target clf.device.send_cmd_recv_rsp.return_value = HEX('00') rdwr_options = {'iterations': 1, 'targets': ['106B']} assert clf.connect(rdwr=rdwr_options, terminate=terminate) is True
def test_connect_rdwr_remote_is_tta_tt1(self, clf, terminate): terminate.side_effect = [False, True] target = nfc.clf.RemoteTarget('106A') target.sens_res = HEX('000C') target.rid_res = HEX('1148B2565400') clf.device.sense_tta.return_value = target rdwr_options = {'iterations': 1} assert clf.connect(rdwr=rdwr_options, terminate=terminate) is True
def test_connect_card_emulate_tag_returns_none(self, clf, terminate): terminate.side_effect = [False, False, True] target = nfc.clf.LocalTarget('212F') target.sensf_req = HEX('0012FC0103') target.sensf_res = HEX('0102FE010203040506FFFFFFFFFFFFFFFF12FC') target.tt3_cmd = HEX('') clf.device.listen_ttf.return_value = target card_options = {'target': target, 'on-startup': lambda t: target} assert clf.connect(card=card_options, terminate=terminate) is None
def test_connect_rdwr_remote_is_tta_dep(self, clf, terminate): terminate.side_effect = [False, True] target = nfc.clf.RemoteTarget('106A') target.sens_res = HEX('4400') target.sel_res = HEX('40') target.sdd_res = HEX('0416C6C2D73881') clf.device.sense_tta.return_value = target rdwr_options = {'iterations': 1, 'targets': ['106A']} assert clf.connect(rdwr=rdwr_options, terminate=terminate) is None
def run(self): try: clf = nfc.ContactlessFrontend('usb') except IOError as error: raise SystemExit(1) try: return clf.connect(rdwr={'on-connect': self.card_connected}) finally: clf.close()
def test_connect_card_with_on_discover_false(self, clf, terminate): terminate.side_effect = [False, False, True] target = nfc.clf.LocalTarget('212F') target.sensf_req = HEX('0012FC0103') target.sensf_res = HEX('0102FE010203040506FFFFFFFFFFFFFFFF12FC') target.tt3_cmd = HEX('0602fe010203040506010b00018000') clf.device.listen_ttf.return_value = target card_options = {'target': target, 'on-startup': lambda t: target, 'on-discover': lambda tag: False} assert clf.connect(card=card_options, terminate=terminate) is None
def recursive_detect(): global new_tag global old_tag new_tag = '' started = time.time(); rdwr_options = { 'on-connect': on_tag_connect, } close_after = lambda: time.time() - started > .1 started = time.time() clf.connect(rdwr=rdwr_options, terminate=close_after) if new_tag != old_tag: tag_released(old_tag) old_tag = '' time.sleep(.2) return True
def test_connect_card_and_communication_error(self, clf, terminate): terminate.side_effect = [False, False, True] target = nfc.clf.LocalTarget('212F') target.sensf_req = HEX('0012FC0103') target.sensf_res = HEX('0102FE010203040506FFFFFFFFFFFFFFFF12FC') target.tt3_cmd = HEX('0602fe010203040506010b00018000') clf.device.listen_ttf.return_value = target clf.device.send_rsp_recv_cmd.side_effect = nfc.clf.CommunicationError card_options = {'target': target, 'on-startup': lambda t: target} assert clf.connect(card=card_options, terminate=terminate) is True
def test_connect_rdwr_one_presence_loop(self, clf, terminate): terminate.side_effect = [False, False, True] target = nfc.clf.RemoteTarget('212F') target.sensf_res = HEX('01 01010701260cca02 ffffffffffffffff 12fc') clf.device.sense_ttf.return_value = target clf.device.send_cmd_recv_rsp.side_effect = [ HEX('12 01 01010701260cca02 ffffffffffffffff'), ] rdwr_options = {'iterations': 1} assert clf.connect(rdwr=rdwr_options, terminate=terminate) is True
def test_connect_card_and_leave_on_connect(self, clf, terminate): terminate.side_effect = [False, False, True] target = nfc.clf.LocalTarget('212F') target.sensf_req = HEX('0012FC0103') target.sensf_res = HEX('0102FE010203040506FFFFFFFFFFFFFFFF12FC') target.tt3_cmd = HEX('0602fe010203040506010b00018000') clf.device.listen_ttf.return_value = target card_options = {'target': target, 'on-startup': lambda t: target, 'on-connect': lambda tag: False} tag = clf.connect(card=card_options, terminate=terminate) assert isinstance(tag, nfc.tag.TagEmulation)
def test_connect_llcp_role_initiator(self, clf, terminate): terminate.side_effect = [False, True] target = nfc.clf.RemoteTarget('212F') target.sensf_res = HEX('01 01fe000000000000 ffffffffffffffff') clf.device.sense_ttf.return_value = target clf.device.send_cmd_recv_rsp.side_effect = [ HEX('18 d501 01fe0000000000005354 0000000032 46666d010113'), HEX('06 d507 000000'), HEX('03 d509'), ] llcp_options = {'role': 'initiator', 'brs': 1} assert clf.connect(llcp=llcp_options, terminate=terminate) is True
def test_connect_llcp_role_target(self, clf, terminate): terminate.side_effect = [False, True] atr_req = 'd400 01fe0000000000005354 00000032 46666d010113' atr_res = 'd501 01fe1111111111115354 0000000032 46666d010113' target = nfc.clf.LocalTarget('212F') target.atr_req = HEX(atr_req) target.atr_res = HEX(atr_res) target.dep_req = HEX('d406 000000') clf.device.listen_dep.return_value = target clf.device.send_rsp_recv_cmd.side_effect = [ HEX('03 d408'), nfc.clf.TimeoutError, ] llcp_options = {'role': 'target'} assert clf.connect(llcp=llcp_options, terminate=terminate) is True
def test_connect_llcp_on_connect_false(self, clf, terminate): terminate.side_effect = [False, True] atr_req = 'd400 01fe0000000000005354 00000032 46666d010113' atr_res = 'd501 01fe1111111111115354 0000000032 46666d010113' target = nfc.clf.LocalTarget('212F') target.atr_req = HEX(atr_req) target.atr_res = HEX(atr_res) target.dep_req = HEX('d406 000000') clf.device.listen_dep.return_value = target clf.device.send_rsp_recv_cmd.side_effect = [ HEX('03 d408'), nfc.clf.TimeoutError, ] llcp_options = {'role': 'target', 'on-connect': lambda clf: False} llc = clf.connect(llcp=llcp_options, terminate=terminate) assert isinstance(llc, nfc.llcp.llc.LogicalLinkController)
def poll(): clf = nfc.ContactlessFrontend('tty:AMA0:pn532') print("Please touch a tag to get a new coin") led_util.prepare_led_gpio() tag = clf.connect(rdwr={'on-connect': connected}) uid_tag = binascii.hexlify(tag.identifier) coin_tag = getCoin(tag) print(int(coin_tag)) new_coin = connect_mysql(uid_tag, coin_tag) for record in tag.ndef.message: new_txt = nfc.ndef.TextRecord(text=new_coin) new_msg = nfc.ndef.Message(new_txt) tag.ndef.message = str(new_msg) finalCoin(tag.ndef.message) led_util.flash_led() return True
def test_connect_rdwr_defaults(self, clf, terminate): terminate.side_effect = [False, True] rdwr_options = {'iterations': 1} assert clf.connect(rdwr=rdwr_options, terminate=terminate) is None
def test_connect_with_empty_options(self, clf): assert clf.connect() is None
def test_connect_with_startup_false(self, clf): assert clf.connect(llcp={'on-startup': lambda llc: False}) is None assert clf.connect(rdwr={'on-startup': lambda llc: False}) is None assert clf.connect(card={'on-startup': lambda llc: False}) is None
def run_once(self): clf = nfc.ContactlessFrontend(self.reader_path) try: return clf.connect(rdwr={'on-connect': self.__on_rdwr_connect}) finally: clf.close()
def test_connect_with_invalid_options(self, clf, options, errstr): with pytest.raises(TypeError) as excinfo: clf.connect(**options) assert str(excinfo.value) == "argument " + errstr
def _test_connect_card_defaults(self, clf, terminate): terminate.side_effect = [False, True] card_options = {'on-startup': lambda _: nfc.clf.LocalTarget('212F')} assert clf.connect(card=card_options, terminate=terminate) is None
def test_connect_llcp_role_invalid(self, clf, terminate): terminate.side_effect = [False, True] llcp_options = {'role': 'invalid'} assert clf.connect(llcp=llcp_options, terminate=terminate) is None
def test_connect_with_terminate_true(self, clf, terminate): terminate.return_value = True assert clf.connect(llcp={}, terminate=terminate) is None assert clf.connect(rdwr={}, terminate=terminate) is None assert clf.connect(card={}, terminate=terminate) is None
def test_connect_false_on_error(self, clf, error): clf.device.sense_tta.side_effect = error clf.device.sense_ttb.side_effect = error clf.device.sense_ttf.side_effect = error clf.device.sense_dep.side_effect = error assert clf.connect(rwdr={}, llcp={}) is False
def test_connect_without_device(self, clf): clf.device = None with pytest.raises(IOError) as excinfo: clf.connect() assert excinfo.value.errno == errno.ENODEV