Skip to main content
Visitor 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.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

    Visitor 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);
    ...