Skip to content

Commit

Permalink
Add tests for pn533 eeprom reading.
Browse files Browse the repository at this point in the history
  • Loading branch information
nehpetsde committed Mar 24, 2017
1 parent b5d4b2c commit 2ca6a76
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/nfc/clf/pn533.py
Original file line number Diff line number Diff line change
Expand Up @@ -388,9 +388,9 @@ def init(transport):
tlv_tag, tlv_len = device.eeprom[index], device.eeprom[index+1]
tlv_data = device.eeprom[index+2:index+2+tlv_len]
if tlv_tag == 3:
device._device_name = tlv_data[2:].decode("utf-16")
device._device_name = tlv_data[2:].decode("utf-16-le")
if tlv_tag == 4:
device._vendor_name = tlv_data[2:].decode("utf-16")
device._vendor_name = tlv_data[2:].decode("utf-16-le")
index += 2 + tlv_len
else:
device._vendor_name = "SensorID"
Expand Down
2 changes: 1 addition & 1 deletion tests/base_clf_pn53x.py
Original file line number Diff line number Diff line change
Expand Up @@ -1048,7 +1048,7 @@ def test_listen_tta_type_1_tag_not_supported(self, device):
'106A', sens_res=b'12', sdd_res=b'1234', sel_res=b'1'),
"sdd_res[0] must be 08h"),
])
def test_listen_tta_target_value_error_temp(self, device, target, errstr):
def test_listen_tta_target_value_error(self, device, target, errstr):
with pytest.raises(ValueError) as excinfo:
device.listen_tta(target, 1.0)
assert str(excinfo.value) == errstr
Expand Down
51 changes: 51 additions & 0 deletions tests/test_clf_pn533.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,57 @@ def device(self, transport):
call(CMD('32 0102')), # RFConfiguration
]

def test_init_with_read_eeprom(self, transport):
device_name_tlv = '03 0e 0e03 440065007600690063006500'
vendor_name_tlv = '04 0e 0e03 560065006e0064006f007200'
string_desc_tlv = '05 04 0403 0904'
transport.write.return_value = None
transport.read.side_effect = [
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 33020707'), # GetFirmwareVersion
ACK(), RSP('33'), # RFConfiguration
ACK(), RSP('33'), # RFConfiguration
ACK(), RSP('33'), # RFConfiguration
ACK(), RSP('33'), # RFConfiguration
ACK(), RSP('13'), # SetParameters
ACK(), RSP('07 00 00'), # ReadRegister
ACK(), RSP('07 00'
+ device_name_tlv # 16 bytes
+ vendor_name_tlv # 16 bytes
+ string_desc_tlv # 6 bytes
+ (64-16-16-6) * 'FF'), # ReadRegister
ACK(), RSP('07 00' + 64 * 'FF'), # ReadRegister
ACK(), RSP('07 00' + 64 * 'FF'), # ReadRegister
ACK(), RSP('07 00' + 64 * 'FF'), # ReadRegister
ACK(), RSP('33'), # RFConfiguration
ACK(), RSP('33'), # RFConfiguration
ACK(), RSP('33'), # RFConfiguration
ACK(), RSP('33'), # RFConfiguration
]
device = nfc.clf.pn533.init(transport)
assert isinstance(device, nfc.clf.pn533.Device)
assert isinstance(device.chipset, nfc.clf.pn533.Chipset)
assert device.vendor_name == "Vendor"
assert device.product_name == "Device"
assert transport.read.call_count == 32

def reg_rsp(self, hexdata):
return RSP('07 00' + hexdata)

Expand Down

0 comments on commit 2ca6a76

Please sign in to comment.