Skip to main content
Karol Merski
Associate II
January 20, 2022
Solved

ST25DV02K-W1/W2 - using of Feig "FEDM for NET" library and its PresentPassword command.

  • January 20, 2022
  • 2 replies
  • 1769 views

I am writing the c# application using Feig "FEDM for NET" library to communicate with ST25DV02K-W1/W2. I want to use PresentPassword and WritePassword command. ST25DV02K-W1/W2 is recognized by the library as 'TH_ISO15693_STM' tag. The 'TH_ISO15693_STM' class does not have a Present/Write password command available. There are implemented in TH_ISO15693_STM_ST25DVxxK class.

 The problem is that memory is not recognized as 'TH_ISO15693_STM_ST25DVxxK' 

 and I can not cast 'TH_ISO15693_STM' to 'TH_ISO15693_STM_ST25DVxxK' class. 

 Does anyone have had this problem too? How can I resolve it?

I try using the Transparent command but was not successful.

This topic has been closed for replies.
Best answer by Damien G.

Hello Karol,

the FEIG SDK recognizes the ST25DV-I2C but not the ST25DV-PWM (ST25DV02K-W1/W2).

Hence your best bet is to use the transparent commands API.

Check out the sendProtocol() API.

Java and .Net APIs are pretty close so you can get inspiration from this example :

String response = mReaderHandle.ICmd.sendProtocol((byte) 0xBF, requestData);

where:

  • mReaderHandle is an instance of FEDM.Core.ReaderModule
  • 0xBF is used for Iso15693 protocol
  • requestData is a String that follows the 0xBF API format. You can find a description in the FEIG LR1002 user manual for instance (H20411-1e-ID-B) or by asking FEIG's customer support at identification-support@feig.de

You will find more examples in the Java source code for the ST25PC-NFC application in the model.readers.feig.FEIG_OBID_Generic_TransceiveImplementation class.

Regards,

Damien

2 replies

Damien G.Best answer
ST Employee
January 20, 2022

Hello Karol,

the FEIG SDK recognizes the ST25DV-I2C but not the ST25DV-PWM (ST25DV02K-W1/W2).

Hence your best bet is to use the transparent commands API.

Check out the sendProtocol() API.

Java and .Net APIs are pretty close so you can get inspiration from this example :

String response = mReaderHandle.ICmd.sendProtocol((byte) 0xBF, requestData);

where:

  • mReaderHandle is an instance of FEDM.Core.ReaderModule
  • 0xBF is used for Iso15693 protocol
  • requestData is a String that follows the 0xBF API format. You can find a description in the FEIG LR1002 user manual for instance (H20411-1e-ID-B) or by asking FEIG's customer support at identification-support@feig.de

You will find more examples in the Java source code for the ST25PC-NFC application in the model.readers.feig.FEIG_OBID_Generic_TransceiveImplementation class.

Regards,

Damien

Karol Merski
Associate II
February 8, 2022

Damien, thank You for your hints.

I did some tests with ReadMultipleBlock sent by sendProtocol function. It works. I attached the simple working code in c#. Maybe it will be useful to someone.

...
byte command = 0x23; 
byte mode = 0x01; // see Reader documentation
byte[] uuid = new byte[] { 0xE0, 0x02, 0x38, 0x00, 0x07, 0xA1, 0x31, 0xBB };
byte address = 0x01;
byte numberOfData = 0x01;
 
byte[] reqSelectData = new byte[] {command, mode, uuid[0], uuid[1], uuid[2], uuid[3], uuid[4], uuid[5], uuid[6], uuid[7], address, numberOfData };
 
byte cmdByte = 0xB0;
string requestData = FeHexConvert.ByteArrayToHexString(reqSelectData); // result: "2301E002380007A131BB0101" string
string responseData = "";
 
// MyTag.BaseTag - it is mine class to store the Tag
int status = MyTag.BaseTag.GetTagHandlerImpl().GetReader().SendProtocol(cmdByte, requestData, out responseData);
 
Console.WriteLine("Response status: " + status);
Console.WriteLine("Response data: " + responseData);
...