Upgrade to new stack NFA_MP_1.03.1
A tag from Korea is Mifare Ultralight C. When the stack performs
presence-check, the tag responds with NACK and enters HALT state.
This patch properly performs presence-check for this tag.
Change-Id: Ia19e6216628bd74e8367f21d90ac806751eacfda
diff --git a/src/nfc/tags/rw_t2t_ndef.c b/src/nfc/tags/rw_t2t_ndef.c
index e9bd16b..70ff67e 100644
--- a/src/nfc/tags/rw_t2t_ndef.c
+++ b/src/nfc/tags/rw_t2t_ndef.c
@@ -88,14 +88,6 @@
{
p_t2t->b_read_hdr = TRUE;
memcpy (p_t2t->tag_hdr, p_data, T2T_READ_DATA_LEN);
-
- /* On Ultralight - C tag, if CC is corrupt, correct it */
- if ( (p_t2t->tag_hdr[0] == TAG_MIFARE_MID)
- &&(p_t2t->tag_hdr[T2T_CC2_TMS_BYTE] >= T2T_INVALID_CC_TMS_VAL0)
- &&(p_t2t->tag_hdr[T2T_CC2_TMS_BYTE] <= T2T_INVALID_CC_TMS_VAL1) )
- {
- p_t2t->tag_hdr[T2T_CC2_TMS_BYTE] = T2T_CC2_TMS_MULC;
- }
}
switch (p_t2t->state)
@@ -846,11 +838,9 @@
UINT16 block;
if ( (p_t2t->tag_hdr[T2T_CC3_RWA_BYTE] != T2T_CC3_RWA_RW)
- ||((p_t2t->tag_hdr[0] == TAG_MIFARE_MID) && (p_t2t->tag_hdr[T2T_CC2_TMS_BYTE] == T2T_CC2_TMS_MULC))
- ||((p_t2t->tag_hdr[0] == TAG_MIFARE_MID) && (p_t2t->tag_hdr[T2T_CC2_TMS_BYTE] == T2T_CC2_TMS_MUL)) )
-
+ ||(p_t2t->skip_dyn_locks) )
{
- /* Skip reading dynamic lock bytes if CC is set as Read only or on MUL/MUL-C tag */
+ /* Skip reading dynamic lock bytes if CC is set as Read only or layer above instructs to skip */
while (num_locks < p_t2t->num_lockbytes)
{
p_t2t->lockbyte[num_locks].lock_byte = 0x00;
@@ -2958,8 +2948,12 @@
** Returns NCI_STATUS_OK,if detect op started.Otherwise,error status.
**
*******************************************************************************/
-tNFC_STATUS RW_T2tDetectNDef (void)
+tNFC_STATUS RW_T2tDetectNDef (BOOLEAN skip_dyn_locks)
{
+ tRW_T2T_CB *p_t2t = &rw_cb.tcb.t2t;
+
+ p_t2t->skip_dyn_locks = skip_dyn_locks;
+
return RW_T2tLocateTlv (TAG_NDEF_TLV);
}