Exemple #1
0
    def test_init_linux_setbaud_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"]
        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(), 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
        ]]
Exemple #2
0
    def test_init_raspi_tty_ama(self, mocker, transport):  # noqa: F811
        mocker.patch('nfc.clf.pn532.Device.__init__').return_value = None
        mocker.patch('nfc.clf.pn532.open').return_value = ["Hardware BCM270"]
        type(transport.tty).port = PropertyMock(return_value='/dev/ttyAMA0')
        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 stty.mock_calls == [
            call('stty -F /dev/ttyAMA0 921600 2> /dev/null'),
            call('stty -F /dev/ttyAMA0 460800 2> /dev/null'),
            call('stty -F /dev/ttyAMA0 230400 2> /dev/null'),
            call('stty -F /dev/ttyAMA0 115200 2> /dev/null'),
        ]
        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
        ]]
        assert transport.read.mock_calls == [
            call(timeout=100), call(timeout=100),
            call(timeout=100), call(timeout=100),
        ]
 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(),
     ]]
Exemple #4
0
 def test_sense_dep_reduce_frame_size(self, device):
     device.chipset.transport.read.side_effect = [
         ACK(),
         RSP('47 0001 66f6e98d1c13dfe56de4'
             '0000000732 46666d 010112'
             '020207ff 040164 070103'),  # InJumpForPSL
         ACK(),
         RSP('09 00'),  # WriteRegister
     ]
     target = nfc.clf.RemoteTarget(
         '106A',
         atr_req=HEX('D400 30313233343536373839 00000032'
                     '46666d 010113 020207ff 040132 070107'))
     target = device.sense_dep(target)
     assert isinstance(target, nfc.clf.RemoteTarget)
     assert target.brty == '106A'
     assert target.atr_req == HEX('D400 30313233343536373839 00000022'
                                  '46666d 010113 020207ff 040132 070107')
     assert target.atr_res == HEX('D501 66f6e98d1c13dfe56de4 0000000722'
                                  '46666d 010112 020207ff 040164 070103')
     assert device.chipset.transport.write.mock_calls == [
         call(_) for _ in [
             CMD('46 010006 30313233343536373839 46666d'
                 '010113 020207ff 040132 070107'),  # InJumpForPSL
             CMD('08 63013b'),  # WriteRegister
         ]
     ]
 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_ioerror_exception_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.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 == 28
Exemple #7
0
 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_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),
        ]
Exemple #10
0
 def test_listen_dep_ioerror_timeout_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.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 == 16
Exemple #11
0
 def test_listen_dep_not_atr_and_then_ioerror(self, device):
     atr_req = 'D4FF 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(),
         IOError(errno.ETIMEDOUT, ""),  # TgInitAsTarget
         ACK(),
         IOError(errno.EIO, ""),  # 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(atr_res)
     with pytest.raises(IOError):
         device.listen_dep(target, 1.0)
     assert device.chipset.transport.read.call_count == 16
Exemple #12
0
    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').return_value = ["cpuinfo"]
        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
        ]]
Exemple #13
0
 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
Exemple #14
0
 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'))
     ]
Exemple #17
0
    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
        ]]
Exemple #18
0
 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_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
Exemple #20
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_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
     ]]
Exemple #22
0
    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
Exemple #24
0
 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"
Exemple #26
0
    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 CMD(hexstr):
    cmd = HEX('D4' + hexstr)
    return b'2' + (STD_FRAME(cmd) if len(cmd) < 256 else EXT_FRAME(cmd))
 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'))]
Exemple #30
0
 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
     ]]