コード例 #1
0
ファイル: test_clf_pn532.py プロジェクト: totodunet/nfcpy
    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),
        ]
コード例 #2
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
         ]
     ]
コード例 #3
0
ファイル: test_clf_pn532.py プロジェクト: totodunet/nfcpy
    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
        ]]
コード例 #4
0
    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),
        ]
コード例 #5
0
 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
コード例 #6
0
ファイル: test_clf_pn532.py プロジェクト: totodunet/nfcpy
    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
        ]]
コード例 #7
0
ファイル: test_clf_pn532.py プロジェクト: totodunet/nfcpy
 def test_power_down(self, chipset, wakeup_enable, generate_irq, command):
     chipset.transport.read.side_effect = [ACK(), RSP('17 00')]
     assert chipset.power_down(wakeup_enable, generate_irq) is None
     assert chipset.transport.write.mock_calls == [call(command)]
     assert chipset.transport.read.mock_calls == [call(100), call(100)]
     chipset.transport.read.side_effect = [ACK(), RSP('17 01')]
     with pytest.raises(chipset.Error) as excinfo:
         chipset.power_down(wakeup_enable, generate_irq)
     assert excinfo.value.errno == 1
コード例 #8
0
 def test_read_register(self, chipset, args, command, response, value):
     chipset.transport.read.side_effect = [ACK(), RSP(response)]
     assert chipset.read_register(*args) == value
     chipset.transport.read.side_effect = [ACK(), RSP('07 01')]
     with pytest.raises(nfc.clf.pn533.Chipset.Error) as excinfo:
         chipset.read_register(*args)
     assert excinfo.value.errno == 1
     assert chipset.transport.read.mock_calls == 2 * [call(100), call(250)]
     assert chipset.transport.write.mock_calls == 2 * [call(CMD(command))]
コード例 #9
0
 def test_write_register(self, chipset, args, command):
     chipset.transport.read.side_effect = [ACK(), RSP('09 00')]
     assert chipset.write_register(*args) is None
     chipset.transport.read.side_effect = [ACK(), RSP('09 01')]
     with pytest.raises(nfc.clf.rcs956.Chipset.Error) as excinfo:
         chipset.write_register(*args)
     assert excinfo.value.errno == 0xfe
     assert chipset.transport.read.mock_calls == 2 * [call(100), call(250)]
     assert chipset.transport.write.mock_calls == 2 * [call(CMD(command))]
コード例 #10
0
ファイル: test_clf_pn532.py プロジェクト: totodunet/nfcpy
 def test_close_transport_type_not_tty(self, device):
     device.chipset.transport.TYPE = "test"
     transport = device.chipset.transport
     chipset = device.chipset
     transport.read.side_effect = [ACK(), RSP('1700')]
     device.close()
     assert transport.write.mock_calls == [call(ACK()), call(CMD('16b000'))]
     device.chipset = chipset
     device.chipset.transport = transport
     device.chipset.transport.TYPE = "TTY"
コード例 #11
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
     ]
     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) == "tt1 command can not be send"
コード例 #12
0
 def test_sense_tta_large_mem_tt1(self, device):
     device.chipset.transport.read.side_effect = [
         ACK(), RSP('4B 00'),                          # InListPassiveTarget
         ACK(), self.reg_rsp('93'),                    # ReadRegister
         ACK(), RSP('4B 01010c00b2565400'),            # InListPassiveTarget
         ACK(), RSP('41 001248b2565400'),              # InDataExchange
     ]
     assert device.sense_tta(nfc.clf.RemoteTarget('106A')) is None
     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
     ]]
コード例 #13
0
 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(),
     ]]
コード例 #14
0
 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
コード例 #15
0
 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
コード例 #16
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
        ]]
コード例 #17
0
ファイル: test_clf_pn532.py プロジェクト: totodunet/nfcpy
    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
        ]]
コード例 #18
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(),
                 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')
コード例 #19
0
 def device(self, transport):
     transport.write.return_value = None
     transport.read.side_effect = [
         ACK(),
         RSP('01 00' + hexlify(bytearray(range(251))).decode()),  # Diagnose
         ACK(),
         RSP('03 0304'),  # GetFirmwareVersion
         ACK(),
         RSP('15'),  # SAMConfiguration
         ACK(),
         RSP('13'),  # SetTAMAParameters
         ACK(),
         RSP('33'),  # RFConfiguration
         ACK(),
         RSP('33'),  # RFConfiguration
         ACK(),
         RSP('33'),  # RFConfiguration
         ACK(),
         RSP('33'),  # RFConfiguration
     ]
     device = nfc.clf.pn531.init(transport)
     device._path = 'usb:001:001'
     assert isinstance(device, nfc.clf.pn531.Device)
     assert isinstance(device.chipset, nfc.clf.pn531.Chipset)
     assert transport.write.mock_calls == [
         call(_) for _ in [
             CMD('00 00' +
                 hexlify(bytearray(range(251))).decode()),  # Diagnose
             CMD('02'),  # GetFirmwareVersion
             CMD('14 0100'),  # SAMConfiguration
             CMD('12 00'),  # SetTAMAParameters
             CMD('32 02000b0a'),  # RFConfiguration
             CMD('32 0400'),  # RFConfiguration
             CMD('32 05010001'),  # 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('33'),  # RFConfiguration
     ]
     device.close()
     assert transport.write.mock_calls == [
         call(CMD('32 0102')),  # RFConfiguration
     ]
コード例 #20
0
 def __test_chipset_communication_fails(self, transport):
     transport.write.return_value = None
     transport.read.side_effect = [ACK(), ERR()]       # Diagnose
     chipset = nfc.clf.rcs956.Chipset(transport, logger=nfc.clf.rcs956.log)
     with pytest.raises(IOError):
         nfc.clf.rcs956.Device(chipset, logger=nfc.clf.rcs956.log)
     assert chipset.transport.write.mock_calls == [call(
         CMD('00 00' + ''.join(["%02x" % (x % 256) for x in range(262)])))
     ]
コード例 #21
0
ファイル: test_clf_pn532.py プロジェクト: totodunet/nfcpy
 def test_listen_dep_not_activated(self, device):
     super(TestDevice, self).test_listen_dep_not_activated(device)
     assert device.chipset.transport.write.mock_calls == [call(_) for _ in [
         CMD('08 63017b6302b06303b0'),                 # WriteRegister
         CMD('8c 0201010102034001 fe01020304050600'
             '   0000000000000000 0001fe0102030405'
             '   0600000000'),                         # TgInitAsTarget
         ACK(),
     ]]
コード例 #22
0
ファイル: test_clf_pn532.py プロジェクト: totodunet/nfcpy
 def test_listen_tta_not_activated(self, device):
     super(TestDevice, self).test_listen_tta_not_activated(device)
     assert device.chipset.transport.write.mock_calls == [call(_) for _ in [
         CMD('08 63013f'),                             # WriteRegister
         CMD('8c 0144000102030000 0102030405060708'
             '   090a0b0c0d0e0f10 1100010203040506'
             '   0700000000'),                         # TgInitAsTarget
         ACK(),
     ]]
コード例 #23
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
     ]
     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
     ]]
コード例 #24
0
def test_init_adra(transport):
    transport.tty.readline.side_effect = [
        b'\x00\x00',
        b'FF00000600V3.2',
        b'FF0000',
        b'FF0000',
    ]
    transport.read.side_effect = [
        ACK(),
        RSP('01 00'
            '000102030405060708090a0b0c0d0e0f'
            '101112131415161718191a1b1c1d1e1f'
            '202122232425262728292a2b2c2d2e2f'
            '303132333435363738393a3b3c3d3e3f'
            '404142434445464748494a4b4c4d4e4f'
            '505152535455565758595a5b5c5d5e5f'
            '606162636465666768696a6b6c6d6e6f'
            '707172737475767778797a7b7c7d7e7f'
            '808182838485868788898a8b8c8d8e8f'
            '909192939495969798999a9b9c9d9e9f'
            'a0a1a2a3a4a5a6a7a8a9aaabacadaeaf'
            'b0b1b2b3b4b5b6b7b8b9babbbcbdbebf'
            'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf'
            'd0d1d2d3d4d5d6d7d8d9dadbdcdddedf'
            'e0e1e2e3e4e5e6e7e8e9eaebecedeeef'
            'f0f1f2f3f4f5f6f7f8f9fa'),  # Diagnose
        ACK(),
        RSP('03 0304'),  # GetFirmwareVersion
        ACK(),
        RSP('15'),  # SAMConfiguration
        ACK(),
        RSP('13'),  # SetTAMAParameters
        ACK(),
        RSP('33'),  # RFConfiguration
        ACK(),
        RSP('33'),  # RFConfiguration
        ACK(),
        RSP('33'),  # RFConfiguration
        ACK(),
        RSP('33'),  # RFConfiguration
    ]
    device = nfc.clf.arygon.init(transport)
    assert isinstance(device, nfc.clf.arygon.DeviceA)
    assert device.vendor_name == "Arygon"
    assert device.product_name == "ADRA"
    assert transport.tty.write.mock_calls == [
        call(b'0av'),
        call(b'0av'),
        call(b'0at05'),
        call(b'0ah05'),
    ]
コード例 #25
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
         ]
     ]
コード例 #26
0
 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
     ]]
コード例 #27
0
 def test_listen_dep_passive_424F(self, device):
     sensf_res = '01 01fe010203040506 0000000000000000 0000'
     atr_req = 'D400 30313233343536373839 00000000'
     atr_res = 'D501 d0d1d2d3d4d5d6d7d8d9 0000000800'
     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 26 11' + atr_req),  # TgInitAsTarget
         ACK(),
         RSP('93 00'),  # TgSetGeneralBytes
         ACK(),
         RSP('89 00 06' + dep_req),  # TgGetInitiatorCommand
         ACK(),
         RSP('09 00'),  # WriteRegister
     ]
     target = nfc.clf.LocalTarget()
     target.sensf_res = HEX(sensf_res)
     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.sensf_res == HEX(sensf_res)
     assert target.sens_res is None
     assert target.sel_res is None
     assert target.sdd_res is None
     assert target.atr_req == HEX(atr_req)
     assert target.atr_res == HEX(atr_res)
     assert target.psl_req is None
     assert target.psl_res is None
     assert target.dep_req == HEX(dep_req)
     assert device.chipset.transport.read.call_count == 18
     return target
コード例 #28
0
 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'))
     ]
コード例 #29
0
ファイル: test_clf_pn532.py プロジェクト: totodunet/nfcpy
    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
        ]]
コード例 #30
0
 def test_send_cmd_recv_rsp_tt1_fifo(self, device, cmd_code, 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(),
         self.reg_rsp('05'),  # ReadRegister
         ACK(),
         self.reg_rsp('00 01 1E 7D 08'),  # ReadRegister
     ]
     cmd = HEX('%s 10 0000000000000000' % cmd_code) + target.rid_res[2:6]
     assert device.send_cmd_recv_rsp(target, 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 633d07 633104 633d00 630d30'
                 '   633910 633104 633107'
                 '   633900 633104 633107'
                 '   633900 633104 633107'
                 '   633900 633104 633107'
                 '   633900 633104 633107'
                 '   633900 633104 633107'
                 '   633900 633104 633107'
                 '   633900 633104 633107'
                 '   633900 633104 633107'
                 '   6339b2 633104 633107'
                 '   633956 633104 633107'
                 '   633954 633104 633107'
                 '   633900 633104 633107'
                 '   6339%s 633104 633107'
                 '   6339%s 633104 633107'
                 '   633108' % (cmd_code, crcb1, crcb2)),  # WriteRegister
             CMD('08 630d20'),  # WriteRegister
             CMD('06 633a'),  # ReadRegister
             CMD('06 6339 6339 6339 6339 6339'),  # ReadRegister
         ]
     ]