This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

RF430CL330H: Proprietary file

Part Number: RF430CL330H


Hello, I apologize for the possible repetition of the topic.

Could you explain how to use proprietary files for transfer to NFC.

Example
(make from http://www.ti.com/lit/an/sloa208a/sloa208a.pdf

uint8_t files_example[] = {
     /* NDEF Tag Application name */
     0xD2, 0x76, 0x00, 0x00, 0x85, 0x01, 0x01,
     /* Capability Container ID */
     0xE1, 0x03, /* NDEF Id */
     0x00, 0x17, /* CCLEN */
     0x20,       /* Map version 2.0 */
     0x00, 0xF9, /* MLe */
     0x00, 0xF6, /* MLc */

     0x04, // T (NDEF File) TLV for NDEF File
     0x06, // L
     0xE1, 0x04, // File ID
     0x01, 0xF4, // Max NDEF - 500 bytes
     0x00, // R
     0x00, // W - 0x00 (write capability available), 0xFF (read-only)

     0x05, // T (Proprietary File) TLV for Proprietary File
     0x06, // L
     0xE1, 0x05, // File ID
     0x00, 0xFF, // Max NDEF
     0x00, // R
     0x00, // W - 0x00 (write capability available), 0xFF (read-only)

     0xE1, 0x04,
     0x00, 0x2E, // These two bytes are excluded from the File Length count
     // File Header
     0xD1, // NDEF Header
     0x01, // Length of the record name
     0x2A, // Length of the payload data
     0x54, // Binary Encoding of record name - 0x54 (Text RTD)
     //Payload
     0x02, // Status Byte - UTF-8, two byte language code
     0x65, 0x6E, // Language Code - English
     0x4E, 0x46, 0x43, 0x20, 0x2D, 0x20, 0x50, 0x6F, 0x77, 0x65,
     0x72, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x54, 0x65, 0x78,
     0x61, 0x73, 0x20, 0x49, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x6D,
     0x65, 0x6E, 0x74, 0x73, 0x20, 0x49, 0x6E, 0x63, 0x2E,

     0xE1, 0x05,
     // File Length
     0x00, 0x29, // These two bytes are excluded from the File Length count.
     // File Header
     0xD1, // NDEF Header
     0x01, // Length of record name
     0x25, // Length of the payload data
     0x55, // Binary encoding of record name - 0x55 (URI RTD)
     // Payload
     0x01, // URI Identifier code - 0x01 = http://www.
     0x74, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x6f, 0x6f,
     0x6c, 0x2f, 0x44, 0x4c, 0x50, 0x2d, 0x37, 0x39, 0x37, 0x30,
     0x41, 0x42, 0x50,
};

  1. I wrote the message correctly?
  2. Will the second file be read, or should this be taken into account when creating the application's android application?
  3. Or will it be better to use another type of record to transfer the byte array?

  • Hello Egor,

    1) You'll need to refer to NFC forum specifications to be sure, but at a quick glance it seems fine.

    2) Depends on Android App I suppose, I never tried reading multiple files so I am not sure - that is definitely a consideration for your own Android app development.

    3) Not sure what you mean by 'byte array', but in general if you are using more than just the E104 record, it should be a proprietary one if I remember right, but again NFC forum specifications are what defines this.
  • Hello Ralph, thanks for your reply!

    By the byte array I meant a message of this kind:

    uint8_t ndef_file_hello_kostya[] = {
        /* NDEF Tag Application name */
        0xD2, 0x76, 0x00, 0x00, 0x85, 0x01, 0x01,
        /* Capability Container ID */
        0xE1, 0x03, /* NDEF Id */
        0x00, 0x0F, /* CCLEN */
        0x20,       /* Map version 2.0 */
        0x00, 0xF9, /* MLe */
        0x00, 0xF6, /* MLc */
    
        0x04,       /* Tag, File control TLV (4 - NDEF) */
        0x06,       /* Length, File control TLV (6 - bytes of data for tag */
        0xE1, 0x04, /* File Id */
        0x0B, 0xDF, /* Max file size */
        0x00,       /* Read access */
        0x00,       /* Write access */
    
        0xE1, 0x04, /* NDEF file id */
        0x00, 0x14, /* NLEN: NDEF length */
        0xD1,       /* MB (Message begin = 1),
                       ME (Message end = 1),
                       CF (Chunk flag = 0),
                       SR (Short Record = 1),
                       IL (ID Length = 0),
                       TNF (Well-known type = 001) */
        0x01, 0x10, /* Type length = 0x01, Payload length = 0x10 */
        0x54,       /* Type = T (text) */
        0x02,       /* Status byte = utf-8, two byte language code */
        0x65, 0x6E, /* Language code - English */
        /* Bytes */
        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
    };

    Here the data is simply bytes that do not represent any text message. That is, the ability to transfer data without indicating the type, status, language, but only useful data.

  • Hello Egor,

    There would be multiple ways to address what you are looking for, all of which requires the reader/application to know what you passing it. You can certainly pass data via text RTD message - but the application would need to know to process that and not just display it. Alternatively, I am fairly certain you can make proprietary RTD's which again would require application customization.

    Really what you need to do is get the NFC Forum documentation and read through it, that will have all the answers you need in side.
  • Hello, Ralph, thank you very much for your reply!

    I will be more careful with NSF forum documentation, I think I will be able to find a suitable solution to my problem.