cancel
Showing results for 
Search instead for 
Did you mean: 

How do I read an ndef message T4T using the st25r3911b_disco.dll file?

pshannon
Associate

Hello All, 

I have been getting familiar with the tools that ST has for their st25 Reader modules and found that the st25r3911b-DISCO board in conjunction with the discovery gui is a great tool for me, as I want to develop custom ndef messages for a type 4 nfc tag. The GUI does a lot of what I need it to but I want to be able to load in my own custom binary ndef messages and send the to the reader to then write to the tag. I found the "DLL_Demo.cpp" files buried in the st program files and it seems promising but the function calls to communicate with the reader have no context or function briefs. And unfortunately there is not a pre-coded case for reading an ndef message, only reading the UID of a an iso14443 type a tag (which a type 4 tag is). I can read the UID of the tag just fine but getting any more information out of it has eluded me. I have tried to use the "nfc" functions that the DLL links but when I try to "nfcRXNBytes()" i get an error back saying " No message". I know this is incorrect as I can read the tag in the standard gui and see the ndef records I have preloaded on the tag. What order should I be making these function calls in?

Thanks Very much! (I included the header files that contains the declarations for the DLL functions for some context)

1 ACCEPTED SOLUTION

Accepted Solutions
Ulysses HERNIOSUS
ST Employee

Hi,

documentation of the functions can be found inside the firmware sources (they are more or less direct forwards of functions in the firmware).

The mentioned nfc*() functions are implementing P2P which is is nowadays not really useful anymore. If you want to stay on the host side with the existing firmware you will have quite some layers to implement: You need to use the function txrxBytes() to exchange frames to exchange the necessary protocol to implement T4T read and ISODEP layer on top of exchange of ISO14443 frame exchange.

I think the last version also contains a demo show-casing the transceive of APDUs. You will find a Dll3911_Demos.sln which contains a demo in C++ which when run with switch "-IsoDep" shows the exchange of SelectNDEFPADU and ReadBinary with a T4T. The complete reading of the NDEF message is a little more work but not much more.

If you are looking for a fully compliant solution then you will find this currently in firmware: The ST25 Embedded NFC lib contains examples of reading NDEF from NFC Forum Tag Types.

Best Regards, Ulysses

View solution in original post

1 REPLY 1
Ulysses HERNIOSUS
ST Employee

Hi,

documentation of the functions can be found inside the firmware sources (they are more or less direct forwards of functions in the firmware).

The mentioned nfc*() functions are implementing P2P which is is nowadays not really useful anymore. If you want to stay on the host side with the existing firmware you will have quite some layers to implement: You need to use the function txrxBytes() to exchange frames to exchange the necessary protocol to implement T4T read and ISODEP layer on top of exchange of ISO14443 frame exchange.

I think the last version also contains a demo show-casing the transceive of APDUs. You will find a Dll3911_Demos.sln which contains a demo in C++ which when run with switch "-IsoDep" shows the exchange of SelectNDEFPADU and ReadBinary with a T4T. The complete reading of the NDEF message is a little more work but not much more.

If you are looking for a fully compliant solution then you will find this currently in firmware: The ST25 Embedded NFC lib contains examples of reading NDEF from NFC Forum Tag Types.

Best Regards, Ulysses