Skip to content

Commit

Permalink
All remaining tests for pn53x sense_dep.
Browse files Browse the repository at this point in the history
  • Loading branch information
nehpetsde committed Mar 22, 2017
1 parent a60c9bb commit 1ae0026
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 8 deletions.
10 changes: 3 additions & 7 deletions src/nfc/clf/pn53x.py
Original file line number Diff line number Diff line change
Expand Up @@ -585,13 +585,9 @@ def sense_ttf(self, target):

def sense_dep(self, target):
# Attempt active communication mode target activation.
try:
assert target.atr_req, "the target.atr_req attribute is required"
assert len(target.atr_req) >= 16, "minimum lenght of atr_req is 16"
assert len(target.atr_req) <= 64, "maximum lenght of atr_req is 64"
except AssertionError as error:
# log error but continue, we also allow dirty stuff
log.error(str(error))
assert target.atr_req, "the target.atr_req attribute is required"
assert len(target.atr_req) >= 16, "minimum lenght of atr_req is 16"
assert len(target.atr_req) <= 64, "maximum lenght of atr_req is 64"

# bitrate and modulation type for send/recv must be set and equal
assert target.brty_send and target.brty_recv
Expand Down
37 changes: 36 additions & 1 deletion tests/base_clf_pn53x.py
Original file line number Diff line number Diff line change
Expand Up @@ -638,17 +638,52 @@ def pn53x_test_sense_ttf_unsupported_bitrate(self, device):
assert str(excinfo.value) == "unsupported bitrate 100F"

def pn53x_test_sense_dep_no_target_found(self, device):
atr_req = HEX('D400 30313233343536373839 00000000')
device.chipset.transport.read.side_effect = [
ACK(), RSP('47 01'), # InJumpForPSL
ACK(), RSP('09 00'), # WriteRegister
]
atr_req = HEX('D400 30313233343536373839 00000000')
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('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('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('46 01000230313233343536373839'), # InJumpForPSL
CMD('08 63013b'), # WriteRegister
]]

def pn53x_test_sense_dep_target_found(self, device):
atr_req = HEX('D400 30313233343536373839 00000000'
'46666d 010113 020207ff 040132 070107')
device.chipset.transport.read.side_effect = [
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('46 010006 30313233343536373839 46666d'
'010113 020207ff 040132 070107'), # InJumpForPSL
CMD('08 63013b'), # WriteRegister
]]

def pn53x_test_listen_tta_not_activated(self, device):
device.chipset.transport.read.side_effect = [
Expand Down
28 changes: 28 additions & 0 deletions tests/test_clf_pn531.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,34 @@ def test_sense_ttf_unsupported_bitrate(self, device):
def test_sense_dep_no_target_found(self, device):
self.pn53x_test_sense_dep_no_target_found(device)

def test_sense_dep_target_found(self, device):
self.pn53x_test_sense_dep_target_found(device)

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_listen_tta_not_activated(self, device):
self.pn53x_test_listen_tta_not_activated(device)
assert device.chipset.transport.write.mock_calls == [call(_) for _ in [
Expand Down
3 changes: 3 additions & 0 deletions tests/test_clf_pn533.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,9 @@ def test_sense_ttf_unsupported_bitrate(self, device):
def test_sense_dep_no_target_found(self, device):
self.pn53x_test_sense_dep_no_target_found(device)

def test_sense_dep_target_found(self, device):
self.pn53x_test_sense_dep_target_found(device)

def test_listen_tta_not_activated(self, device):
self.pn53x_test_listen_tta_not_activated(device)
assert device.chipset.transport.write.mock_calls == [call(_) for _ in [
Expand Down

0 comments on commit 1ae0026

Please sign in to comment.