def test_write_frame(self, chipset): chipset.write_frame(HEX('010203')) assert chipset.transport.write.mock_calls == [ call(_) for _ in [ HEX('32010203'), ] ]
def test_init_raspi_tty_ser(self, mocker, transport): # noqa: F811 mocker.patch('nfc.clf.pn532.Device.__init__').return_value = None device_tree_model = mocker.mock_open(read_data=b"Raspberry Pi") mocker.patch('nfc.clf.pn532.open', device_tree_model) type(transport.tty).port = PropertyMock(return_value='/dev/ttyS0') stty = mocker.patch('os.system') stty.return_value = -1 sys.platform = "linux" transport.write.return_value = None transport.read.side_effect = [ ACK(), RSP('03 32010607'), # GetFirmwareVersion ACK(), RSP('15'), # SAMConfiguration ] device = nfc.clf.pn532.init(transport) assert isinstance(device, nfc.clf.pn532.Device) assert stty.mock_calls == [] assert transport.write.mock_calls == [ call(_) for _ in [ HEX(10 * '00') + CMD('02'), # GetFirmwareVersion HEX(10 * '00') + CMD('14 010000'), # SAMConfiguration ] ] assert transport.read.mock_calls == [ call(timeout=100), call(timeout=100), call(timeout=100), call(timeout=100), ]
def test_init_linux_setbaud_ack_err(self, mocker, transport): # noqa: F811 mocker.patch('nfc.clf.pn532.Device.__init__').return_value = None mocker.patch('nfc.clf.pn532.open').side_effect = IOError stty = mocker.patch('os.system') stty.side_effect = [-1, 0, None] sys.platform = "linux" transport.write.return_value = None transport.read.side_effect = [ ACK(), RSP('03 32010607'), # GetFirmwareVersion ACK(), RSP('15'), # SAMConfiguration ERR(), # SetSerialBaudrate ] with pytest.raises(IOError) as excinfo: nfc.clf.pn532.init(transport) assert excinfo.value.errno == errno.ENODEV assert stty.mock_calls == [ call('stty -F /dev/ttyS0 921600 2> /dev/null'), call('stty -F /dev/ttyS0 460800 2> /dev/null'), call('stty -F /dev/ttyS0 115200 2> /dev/null'), ] assert transport.write.mock_calls == [ call(_) for _ in [ HEX(10 * '00') + CMD('02'), # GetFirmwareVersion HEX(10 * '00') + CMD('14 010000'), # SAMConfiguration HEX(10 * '00') + CMD('10 06'), # SetSerialBaudrate ] ]
def test_listen_dep_ioerror_exception_after_atr(self, device): atr_req = 'D400 30313233343536373839 00000000' atr_res = 'D501 d0d1d2d3d4d5d6d7d8d9 0000000800' device.chipset.transport.read.side_effect = [ ACK(), RSP('19'), # ResetMode ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('33'), # RFConfiguration ACK(), RSP('13'), # SetParameters ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('8D 05 11' + atr_req), # TgInitAsTarget ACK(), RSP('93 00'), # TgSetGeneralBytes ACK(), IOError(errno.EIO, ""), # TgGetInitiatorCommand ] target = nfc.clf.LocalTarget() target.sensf_res = HEX("01 01fe010203040506 0000000000000000 0000") target.sens_res = HEX("0101") target.sel_res = HEX("40") target.sdd_res = HEX("08010203") target.atr_res = HEX(atr_res) with pytest.raises(IOError): device.listen_dep(target, 1.0) assert device.chipset.transport.read.call_count == 16
def test_init_linux_stty_set_460800(self, mocker, transport): # noqa: F811 mocker.patch('nfc.clf.pn532.Device.__init__').return_value = None mocker.patch('nfc.clf.pn532.open').side_effect = IOError stty = mocker.patch('os.system') stty.side_effect = [-1, 0, None] sys.platform = "linux" transport.write.return_value = None transport.read.side_effect = [ ACK(), RSP('03 32010607'), # GetFirmwareVersion ACK(), RSP('15'), # SAMConfiguration ACK(), RSP('11'), # SetSerialBaudrate ] device = nfc.clf.pn532.init(transport) assert isinstance(device, nfc.clf.pn532.Device) assert stty.mock_calls == [ call('stty -F /dev/ttyS0 921600 2> /dev/null'), call('stty -F /dev/ttyS0 460800 2> /dev/null'), call('stty -F /dev/ttyS0 115200 2> /dev/null'), ] assert transport.write.mock_calls == [ call(_) for _ in [ HEX(10 * '00') + CMD('02'), # GetFirmwareVersion HEX(10 * '00') + CMD('14 010000'), # SAMConfiguration HEX(10 * '00') + CMD('10 06'), ACK(), # SetSerialBaudrate ] ]
def test_listen_dep_command_data_error(self, device, dep_req): atr_req = 'D400 30313233343536373839 00000000' atr_res = 'D501 d0d1d2d3d4d5d6d7d8d9 0000000800' device.chipset.transport.read.side_effect = [ ACK(), RSP('19'), # ResetMode ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('33'), # RFConfiguration ACK(), RSP('13'), # SetParameters ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('8D 04 11' + atr_req), # TgInitAsTarget ACK(), RSP('93 00'), # TgSetGeneralBytes ACK(), RSP('89 00 06' + dep_req), # TgGetInitiatorCommand ] target = nfc.clf.LocalTarget() target.sensf_res = HEX('01 01fe010203040506 0000000000000000 0000') target.sens_res = HEX("0101") target.sel_res = HEX("40") target.sdd_res = HEX("08010203") target.atr_res = HEX(atr_res) assert device.listen_dep(target, 1.0) is None assert device.chipset.transport.read.call_count == 16
def test_sense_dep_target_found(self, device): atr_req = HEX('D400 30313233343536373839 00000002' '46666d 010113 020207ff 040132 070107') device.chipset.transport.read.side_effect = [ ACK(), RSP('33'), # RFConfiguration ACK(), RSP('47 0001 66f6e98d1c13dfe56de4' '0000000702 46666d 010112' '020207ff 040164 070103'), # InJumpForPSL ACK(), RSP('09 00'), # WriteRegister ] target = nfc.clf.RemoteTarget('106A', atr_req=atr_req) target = device.sense_dep(target) assert isinstance(target, nfc.clf.RemoteTarget) assert target.brty == '106A' assert target.atr_req == atr_req assert target.atr_res == HEX('D501 66f6e98d1c13dfe56de4 0000000702' '46666d 010112 020207ff 040164 070103') assert device.chipset.transport.write.mock_calls == [ call(_) for _ in [ CMD('32 020b0b0a'), # RFConfiguration CMD('46 010006 30313233343536373839 46666d' '010113 020207ff 040132 070107'), # InJumpForPSL CMD('08 63013b'), # WriteRegister ] ] return target
def test_listen_dep_active_106A_psl_to_424F(self, device): atr_req = 'D400 30313233343536373839 00000000' atr_res = 'D501 d0d1d2d3d4d5d6d7d8d9 0000000800' psl_req = 'D404 00 12 03' psl_res = 'D505 00' dep_req = 'D406000000' device.chipset.transport.read.side_effect = [ ACK(), RSP('19'), # ResetMode ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('33'), # RFConfiguration ACK(), RSP('13'), # SetParameters ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('8D 05 11' + atr_req), # TgInitAsTarget ACK(), RSP('93 00'), # TgSetGeneralBytes ACK(), RSP('89 00 06' + psl_req), # TgGetInitiatorCommand ACK(), self.reg_rsp('FD'), # ReadRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('91 00'), # TgResponseToInitiator ACK(), self.reg_rsp('FD'), # ReadRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('89 00 06' + dep_req), # TgGetInitiatorCommand ACK(), RSP('09 00'), # WriteRegister ] target = nfc.clf.LocalTarget() target.sensf_res = HEX("01 01fe010203040506 0000000000000000 0000") target.sens_res = HEX("0101") target.sel_res = HEX("40") target.sdd_res = HEX("08010203") target.atr_res = HEX(atr_res) target = device.listen_dep(target, 1.0) assert isinstance(target, nfc.clf.LocalTarget) assert target.brty == "424F" assert target.atr_req == HEX(atr_req) assert target.atr_res == HEX(atr_res) assert target.psl_req == HEX(psl_req) assert target.psl_res == HEX(psl_res) assert target.dep_req == HEX(dep_req) assert target.sensf_res is None assert target.sens_res is None assert target.sel_res is None assert target.sdd_res is None assert device.chipset.transport.read.call_count == 30 return target
def test_send_cmd_recv_rsp_tt1_rseg(self, device): target = self.test_sense_tta_target_is_tt1(device) device.chipset.transport.write.reset_mock() device.chipset.transport.read.reset_mock() device.chipset.transport.read.side_effect = [ ACK(), self.reg_rsp('00 00 00'), # ReadRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('33'), # RFConfiguration ] + list( itertools.chain.from_iterable([ [ ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), self.reg_rsp('05'), # ReadRegister ACK(), self.reg_rsp('00 01 1E 7D 08'), # ReadRegister ] for _ in range(16) ])) cmd = HEX('10 10 0000000000000000') + target.rid_res[2:6] rsp = device.send_cmd_recv_rsp(target, cmd, 1.0) assert rsp == HEX('10 00000000 00000000 00000000 00000000')
def test_send_cmd_recv_rsp_tt1_fifo(self, device, cmd, crcb1, crcb2): target = self.test_sense_tta_target_is_tt1(device) device.chipset.transport.write.reset_mock() device.chipset.transport.read.reset_mock() device.chipset.transport.read.side_effect = [ ACK(), self.reg_rsp('00 00 00'), # ReadRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('33'), # RFConfiguration ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), self.reg_rsp('05'), # ReadRegister ACK(), self.reg_rsp('00 01 1E 7D 08'), # ReadRegister ] tt1_cmd = HEX('%s 10 0000000000000000' % cmd) + target.rid_res[2:6] assert device.send_cmd_recv_rsp(target, tt1_cmd, 1.0) == HEX('0000') assert device.chipset.transport.write.mock_calls == [call(_) for _ in [ CMD('06 6302 6303 6305'), # ReadRegister CMD('08 630200 630300 630540'), # WriteRegister CMD('32 020a0b0f'), # RFConfiguration CMD('08 6339%s 630d10 633d07 633104' % cmd), # WriteRegister CMD('08 633910 633d00 633104'), # WriteRegister CMD('08 633900 633d00 633104'), # WriteRegister CMD('08 633900 633d00 633104'), # WriteRegister CMD('08 633900 633d00 633104'), # WriteRegister CMD('08 633900 633d00 633104'), # WriteRegister CMD('08 633900 633d00 633104'), # WriteRegister CMD('08 633900 633d00 633104'), # WriteRegister CMD('08 633900 633d00 633104'), # WriteRegister CMD('08 633900 633d00 633104'), # WriteRegister CMD('08 6339b2 633d00 633104'), # WriteRegister CMD('08 633956 633d00 633104'), # WriteRegister CMD('08 633954 633d00 633104'), # WriteRegister CMD('08 633900 633d00 633104'), # WriteRegister CMD('08 6339%s 633d00 633104' % crcb1), # WriteRegister CMD('08 6339%s 63310c 633d80' % crcb2), # WriteRegister CMD('08 630d00'), # WriteRegister CMD('06 633a'), # ReadRegister CMD('06 6339 6339 6339 6339 6339'), # ReadRegister ]]
def test_sense_tta_target_is_tt1(self, device): target = super(TestDevice, self).test_sense_tta_target_is_tt1(device) assert isinstance(target, nfc.clf.RemoteTarget) assert target.rid_res == HEX('1148 B2565400') assert target.sens_res == HEX('000C') assert device.chipset.transport.write.mock_calls == [call(_) for _ in [ CMD('4A 0100'), # InListPassiveTarget CMD('06 6339'), # ReadRegister CMD('4A 0104'), # InListPassiveTarget CMD('40 0178000000000000'), # InDataExchange ]] return target
def test_tg_init_as_target(self, chipset): chipset.transport.read.side_effect = [ACK(), RSP('8D 01 02 03')] mifare = HEX('010203040506') felica = HEX('010203040506070809101112131415161718') nfcid3 = HEX('01020304050607080910') gbytes = HEX('313233') args = (0x02, mifare, felica, nfcid3, gbytes, 0.5) assert chipset.tg_init_target(*args) == HEX('01 02 03') assert chipset.transport.read.mock_calls == [call(100), call(500)] assert chipset.transport.write.mock_calls == [ call(CMD('8C 02 010203040506 010203040506070809101112131415161718' '01020304050607080910 313233')) ]
def test_send_cmd_recv_rsp_tt1_fifo_with_timeout(self, device): target = self.test_sense_tta_target_is_tt1(device) device.chipset.transport.write.reset_mock() device.chipset.transport.read.reset_mock() device.chipset.transport.read.side_effect = [ ACK(), self.reg_rsp('00 00 00'), # ReadRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('33'), # RFConfiguration ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), self.reg_rsp('00'), # ReadRegister ] cmd = HEX('02 10 0000000000000000') + target.rid_res[2:6] with pytest.raises(nfc.clf.TimeoutError): device.send_cmd_recv_rsp(target, cmd, 1.0)
def test_send_cmd_recv_rsp_tt1_fifo_with_crc_error(self, device): target = self.test_sense_tta_target_is_tt1(device) device.chipset.transport.write.reset_mock() device.chipset.transport.read.reset_mock() device.chipset.transport.read.side_effect = [ ACK(), self.reg_rsp('00 00 00'), # ReadRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('33'), # RFConfiguration ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('09 00'), # WriteRegister ACK(), self.reg_rsp('05'), # ReadRegister ACK(), self.reg_rsp('00 01 1E 00 00'), # ReadRegister ] cmd = HEX('02 10 0000000000000000') + target.rid_res[2:6] with pytest.raises(nfc.clf.TransmissionError) as excinfo: device.send_cmd_recv_rsp(target, cmd, 1.0) assert str(excinfo.value) == "crc_b check error"
def test_init_sam_cfg_rsp_err(self, mocker, transport): # noqa: F811 mocker.patch('nfc.clf.pn532.Device.__init__').return_value = None sys.platform = "" transport.write.return_value = None transport.read.side_effect = [ ACK(), RSP('03 32010607'), # GetFirmwareVersion ACK(), ERR(), # SAMConfiguration ] with pytest.raises(IOError) as excinfo: nfc.clf.pn532.init(transport) assert excinfo.value.errno == errno.ENODEV assert transport.write.mock_calls == [call(_) for _ in [ HEX(10 * '00') + CMD('02'), # GetFirmwareVersion HEX(10 * '00') + CMD('14 010000'), # SAMConfiguration ]]
def test_sense_tta_target_is_dep(self, device): target = super(TestDevice, self).test_sense_tta_target_is_dep(device) assert target.sens_res == HEX('4400') assert device.chipset.transport.write.mock_calls == [call(_) for _ in [ CMD('4A 0100'), # InListPassiveTarget ]] return target
def test_sense_dep_no_target_found(self, device): atr_req = HEX('D400 30313233343536373839 00000000') device.chipset.transport.read.side_effect = [ ACK(), RSP('33'), # RFConfiguration ACK(), RSP('47 01'), # InJumpForPSL ACK(), RSP('09 00'), # WriteRegister ] target = nfc.clf.RemoteTarget('106A', atr_req=atr_req) assert device.sense_dep(target) is None assert device.chipset.transport.write.mock_calls == [call(_) for _ in [ CMD('32 020b0b0a'), # RFConfiguration CMD('46 01000230313233343536373839'), # InJumpForPSL CMD('08 63013b'), # WriteRegister ]] device.chipset.transport.read.reset_mock() device.chipset.transport.write.reset_mock() device.chipset.transport.read.side_effect = [ ACK(), RSP('33'), # RFConfiguration ACK(), RSP('47 02'), # InJumpForPSL ACK(), RSP('09 00'), # WriteRegister ] target = nfc.clf.RemoteTarget('106A', atr_req=atr_req) assert device.sense_dep(target) is None assert device.chipset.transport.write.mock_calls == [call(_) for _ in [ CMD('32 020b0b0a'), # RFConfiguration CMD('46 01000230313233343536373839'), # InJumpForPSL CMD('08 63013b'), # WriteRegister ]]
def test_init_linux_stty_set_none(self, mocker, transport): # noqa: F811 mocker.patch('nfc.clf.pn532.Device.__init__').return_value = None mocker.patch('nfc.clf.pn532.open').return_value = ["cpuinfo"] mocker.patch('os.system').return_value = -1 sys.platform = "linux" transport.write.return_value = None transport.read.side_effect = [ ACK(), RSP('03 32010607'), # GetFirmwareVersion ACK(), RSP('15'), # SAMConfiguration ] device = nfc.clf.pn532.init(transport) assert isinstance(device, nfc.clf.pn532.Device) assert transport.write.mock_calls == [call(_) for _ in [ HEX(10 * '00') + CMD('02'), # GetFirmwareVersion HEX(10 * '00') + CMD('14 010000'), # SAMConfiguration ]]
def test_sense_tta_target_is_tt2(self, device): target = super(TestDevice, self).test_sense_tta_target_is_tt2(device) assert target.sens_res == HEX('4400') assert device.chipset.transport.write.mock_calls == [call(_) for _ in [ CMD('4A 0100'), # InListPassiveTarget CMD('06 6303'), # ReadRegister CMD('08 63037f'), # WriteRegister ]] return target
def test_listen_dep_ioerror_timeout_after_psl(self, device): atr_req = 'D400 30313233343536373839 00000000' atr_res = 'D501 d0d1d2d3d4d5d6d7d8d9 0000000800' psl_req = 'D404 00 12 03' device.chipset.transport.read.side_effect = [ ACK(), RSP('19'), # ResetMode ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('33'), # RFConfiguration ACK(), RSP('13'), # SetParameters ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('8D 05 11' + atr_req), # TgInitAsTarget ACK(), RSP('93 00'), # TgSetGeneralBytes ACK(), RSP('89 00 06' + psl_req), # TgGetInitiatorCommand ACK(), self.reg_rsp('FD'), # ReadRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('91 00'), # TgResponseToInitiator ACK(), self.reg_rsp('FD'), # ReadRegister ACK(), RSP('09 00'), # WriteRegister ACK(), IOError(errno.ETIMEDOUT, ""), # TgGetInitiatorCommand ] target = nfc.clf.LocalTarget() target.sensf_res = HEX("01 01fe010203040506 0000000000000000 0000") target.sens_res = HEX("0101") target.sel_res = HEX("40") target.sdd_res = HEX("08010203") target.atr_res = HEX(atr_res) assert device.listen_dep(target, 1.0) is None assert device.chipset.transport.read.call_count == 28
def test_sense_tta_target_tt2_cascade(self, device, sdd, sdd_res): device.chipset.transport.read.side_effect = [ ACK(), RSP('4B 01 01 0044 00' + sdd), # InListPassiveTarget ACK(), self.reg_rsp('FF'), # ReadRegister ACK(), RSP('09 00'), # WriteRegister ] target = device.sense_tta(nfc.clf.RemoteTarget('106A')) assert isinstance(target, nfc.clf.RemoteTarget) assert target.sel_res == HEX('00') assert target.sdd_res == HEX(sdd_res) assert target.sens_res == HEX('0044') # reversed for PN531 assert device.chipset.transport.write.mock_calls == [ call(_) for _ in [ CMD('4A 0100'), # InListPassiveTarget CMD('06 6303'), # ReadRegister CMD('08 63037f'), # WriteRegister ] ]
def test_send_cmd_recv_rsp_tt1_rseg(self, device): target = self.test_sense_tta_target_is_tt1(device) device.chipset.transport.write.reset_mock() device.chipset.transport.read.reset_mock() device.chipset.transport.read.side_effect = [ ACK(), self.reg_rsp('00 00 00'), # ReadRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('33'), # RFConfiguration ] cmd = HEX('10 10 0000000000000000') + target.rid_res[2:6] with pytest.raises(nfc.clf.TransmissionError) as excinfo: device.send_cmd_recv_rsp(target, cmd, 1.0) assert str(excinfo.value) == "tt1 command can not be send"
def test_listen_dep_not_activated(self, device): device.chipset.transport.read.side_effect = [ ACK(), RSP('19'), # ResetMode ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('33'), # RFConfiguration ACK(), RSP('13'), # SetParameters ACK(), RSP('09 00'), # WriteRegister ACK(), IOError(errno.ETIMEDOUT, ""), # TgInitAsTarget ] target = nfc.clf.LocalTarget() target.sensf_res = HEX("01 01fe010203040506 0000000000000000 0000") target.sens_res = HEX("0101") target.sel_res = HEX("40") target.sdd_res = HEX("08010203") target.atr_res = HEX("D501 d0d1d2d3d4d5d6d7d8d9 0000000800") assert device.listen_dep(target, 0.001) is None assert device.chipset.transport.read.call_count == 12 assert device.chipset.transport.write.mock_calls == [ call(_) for _ in [ CMD('18 01'), ACK(), # ResetMode CMD('08 630b80'), # WriteRegister CMD('32 82080208'), # RFConfiguration CMD('12 08'), # SetParameters CMD('08 63017b6302b06303b0'), # WriteRegister CMD('8c 0201010102034001 fe01020304050600' ' 0000000000000000 0001fe0102030405' ' 060000'), # TgInitAsTarget ACK(), ] ]
def test_init_linux_version_rsp_err(self, mocker, transport): # noqa: F811 mocker.patch('nfc.clf.pn532.Device.__init__').return_value = None mocker.patch('nfc.clf.pn532.open').return_value = ["cpuinfo"] mocker.patch('os.system').return_value = -1 sys.platform = "linux" transport.write.return_value = None transport.read.side_effect = [ ACK(), ERR(), # GetFirmwareVersion ] with pytest.raises(IOError) as excinfo: nfc.clf.pn532.init(transport) assert excinfo.value.errno == errno.ENODEV assert transport.write.mock_calls == [call(_) for _ in [ HEX(10 * '00') + CMD('02'), # GetFirmwareVersion ]]
def test_send_cmd_recv_rsp_tt1_fifo(self, device, cmd, crcb1, crcb2): target = self.test_sense_tta_target_is_tt1(device) device.chipset.transport.write.reset_mock() device.chipset.transport.read.reset_mock() device.chipset.transport.read.side_effect = [ ACK(), self.reg_rsp('00 00 00'), # ReadRegister ACK(), RSP('09 00'), # WriteRegister ACK(), RSP('33'), # RFConfiguration ] tt1_cmd = HEX('%s 10 0000000000000000' % cmd) + target.rid_res[2:6] with pytest.raises(nfc.clf.TransmissionError) as excinfo: device.send_cmd_recv_rsp(target, tt1_cmd, 1.0) assert str(excinfo.value) == "tt1 command can not be send" print(device.chipset.transport.read.call_count) assert device.chipset.transport.write.mock_calls == [call(_) for _ in [ CMD('06 6302 6303 6305'), # ReadRegister CMD('08 630200 630300 630540'), # WriteRegister CMD('32 020a0b0f'), # RFConfiguration ]]
def test_get_general_status(self, chipset): chipset.transport.read.side_effect = [ACK(), RSP('05 010203')] assert chipset.get_general_status() == HEX('010203') assert chipset.transport.read.mock_calls == [call(100), call(100)] assert chipset.transport.write.mock_calls == [call(CMD('04'))]
def device(self, transport): sys.platform = "testing" transport.write.return_value = None transport.read.side_effect = [ ACK(), RSP('03 32010607'), # GetFirmwareVersion ACK(), RSP('15'), # SAMConfiguration ACK(), RSP('01 00' '000102030405060708090a0b0c0d0e0f' '101112131415161718191a1b1c1d1e1f' '202122232425262728292a2b2c2d2e2f' '303132333435363738393a3b3c3d3e3f' '404142434445464748494a4b4c4d4e4f' '505152535455565758595a5b5c5d5e5f' '606162636465666768696a6b6c6d6e6f' '707172737475767778797a7b7c7d7e7f' '808182838485868788898a8b8c8d8e8f' '909192939495969798999a9b9c9d9e9f' 'a0a1a2a3a4a5a6a7a8a9aaabacadaeaf' 'b0b1b2b3b4b5b6b7b8b9babbbcbdbebf' 'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf' 'd0d1d2d3d4d5d6d7d8d9dadbdcdddedf' 'e0e1e2e3e4e5e6e7e8e9eaebecedeeef' 'f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff' '000102030405'), # Diagnose ACK(), RSP('03 32010607'), # GetFirmwareVersion ACK(), RSP('13'), # SetParameters ACK(), RSP('33'), # RFConfiguration ACK(), RSP('33'), # RFConfiguration ACK(), RSP('33'), # RFConfiguration ACK(), RSP('33'), # RFConfiguration ACK(), RSP('33'), # RFConfiguration ACK(), RSP('33'), # RFConfiguration ACK(), RSP('33'), # RFConfiguration ACK(), RSP('33'), # RFConfiguration ] device = nfc.clf.pn532.init(transport) device._path = '/dev/ttyS0' assert isinstance(device, nfc.clf.pn532.Device) assert isinstance(device.chipset, nfc.clf.pn532.Chipset) assert transport.write.mock_calls == [call(_) for _ in [ HEX(10 * '00') + CMD('02'), # GetFirmwareVersion HEX(10 * '00') + CMD('14 010000'), # SAMConfiguration CMD('00 00' '000102030405060708090a0b0c0d0e0f' '101112131415161718191a1b1c1d1e1f' '202122232425262728292a2b2c2d2e2f' '303132333435363738393a3b3c3d3e3f' '404142434445464748494a4b4c4d4e4f' '505152535455565758595a5b5c5d5e5f' '606162636465666768696a6b6c6d6e6f' '707172737475767778797a7b7c7d7e7f' '808182838485868788898a8b8c8d8e8f' '909192939495969798999a9b9c9d9e9f' 'a0a1a2a3a4a5a6a7a8a9aaabacadaeaf' 'b0b1b2b3b4b5b6b7b8b9babbbcbdbebf' 'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf' 'd0d1d2d3d4d5d6d7d8d9dadbdcdddedf' 'e0e1e2e3e4e5e6e7e8e9eaebecedeeef' 'f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff' '000102030405'), # Diagnose CMD('02'), # GetFirmwareVersion CMD('12 00'), # SetParameters CMD('32 02000b0a'), # RFConfiguration CMD('32 0400'), # RFConfiguration CMD('32 05010001'), # RFConfiguration CMD('32 0a59f43f114d85616f266287'), # RFConfiguration CMD('32 0b69ff3f114185616f'), # RFConfiguration CMD('32 0cff0485'), # RFConfiguration CMD('32 0d85158a8508b28501da'), # RFConfiguration CMD('32 0102'), # RFConfiguration ]] transport.write.reset_mock() transport.read.reset_mock() yield device transport.write.reset_mock() transport.read.reset_mock() transport.read.side_effect = [ ACK(), RSP('11'), # SetSerialBaudrate ACK(), RSP('17 00'), # PowerDown ] device.close() assert transport.write.mock_calls == [call(_) for _ in [ ACK(), # cancel last cmd CMD('10 04'), ACK(), # SetSerialBaudrate CMD('16 b000'), # PowerDown ]]
def CMD(hexstr): cmd = HEX('D4' + hexstr) return b'2' + (STD_FRAME(cmd) if len(cmd) < 256 else EXT_FRAME(cmd))