How to mask tags having UID more than 4 bytes in ISO14443A protocol in NXP NFC reader library.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to mask tags having UID more than 4 bytes in ISO14443A protocol in NXP NFC reader library.

1,082 Views
pallavjoshi
Contributor I
I am using the "NXP NFC Reader Library" for reading HF(ISO14443A) tags like "Classic"/"Ultralight" etc. I can read tags using the below functions call.
++++++++++++++++++++++++++++++++++++++++++
/*Symbol 6,7,8*/
status = phpalI14443p3a_Anticollision( pDataParams->pPal1443p3aDataParams,
                                                               aCascadeCodes[bCascadeCodeIdx], /* Cascade code */
                                                                                                       aTypeAUid, /* Input UID */
                                                                                                 bTypeANvbUid, /* UID len = 0 */
                                                                                                       aTypeAUid, /* UID out */
                                                                                             &bTypeANvbUid); /* UID out size */
++++++++++++++++++++++++++++++++++++++++++
where, " aTypeAUid" is NULL. If I initialize " aTypeAUid" with some bytes data, Let assume " aTypeAUid = {0x01, 0x02}", then I am able to read tags having UID starting from "0102".
But if the tag is having UID of 7 bytes this above logic is not working. I have the following query. a) Is there a way in the NXP NFC Reader library to do masked UID read(filtered read basis on UID).
If I apply the mask as "1234", I should be able to read-only tags starting from "1234" b) How to resolve the above issue. Please let me know if there is any document or example code to achieve read on basis of UID matching to given mask bytes.
0 Kudos
3 Replies

975 Views
nxf58474
NXP Employee
NXP Employee

Hi,

 

Hope you are doing well. I apologize for a late reply. The function you mentioned is for the anti-collision process, when more than one card is present. In case of two cards, the aTypeAUid can help you to choose one of the cards.

 

But there is no function that filters the UID's. To read the UID you need to activate the card, and then read it. In your application you should verify the UID and decide to read/write to that card, or ignore it. You can verify the bytes you need to filter the cards you are looking for.

 

If you have any further question, please don't hesitate to ask.

 

Best Regards,

Ricardo

0 Kudos

975 Views
pallavjoshi
Contributor I

Thanks for your response. It was much awaited.

Yes, I can do that by reading uid and then verifying it post reading. But this way it will be post filtering.

.

Here my intension is to do a pre-filtering kind of thing.

I am able to do that for 4byte uid and 7 byte uid separately but unable to merge both mechanism. Either I am able to run 4byte uid filtering or 7 bye uid filtering.

.

Let me know if there is any way to do pre-filtering (on air).

0 Kudos

975 Views
nxf58474
NXP Employee
NXP Employee

Hi,

 

Hope you are doing well. Unfortunately there is no way of "pre-filtering" UID's. The function mentioned in the post, is for multiple cards anti-collision mechanism.

 

Regards,

Ricardo

0 Kudos