FAQ - GallusMax/libdanrfid GitHub Wiki

Whats the goal?

Ths library shall provide a reference implementation dealing with the different implementations of the Danish Data Model. While providing a quite strict definition, tags often cannot be interchanged between institutions. If there were a reference implementation, vendors could easily check compliance of their model against it.

What is Danish on the Danish Model?

Denmarks Library widely use RFID ("near NfcV" ;-) tags providing a high level of automation for checkout and return operations. Happily most of them use a common standard - later on called the danish one. Read more about this standard here. ISO 28560-3 describing the facts being, was published in March 2011. At that time NFC was established already. A more detailed view written by the authors of the danish model, already addressing interlibrary loan is here at http://biblstandard.dk/rfid/. The differences between the current implementation and ISO 28560-3 are addressed at http://biblstandard.dk/rfid/dk/iso28560versusdsinf163.pdf

What about other Data Models

There are libraries using a tag coding which only has the barcode. DM11 is such an example, where even only (hexa)numerical digits are allowed. These tags can be read, but currently the tag generation will (at least) lack the CRC support.

Where's the code?

The main work is done by DDMData and DM11Data, which offer methods for creation, reading, testing and manipulating the userdata portion on a Tag. A CRC helper class creates/checks the checksum.

Another class DDMFindings inspects the payload in order to find design issues on tags "in the wild". Different vendors produce - slightly - different tags, while all pretend to implement the Danish Data Model. The differences will prevent a seamless cross-reading experience which will be necessary, if RFID shall ever play a role in InterLibrary Loan.

Meanwhile there is an Android App called RFID Validator analyzing given tags.

A small commandline tool for block layout generation will follow soon.

Show me an example

DDMData mytag = new DDMData(); // a blank tag, already inititalized with the hardcoded ISIL (change the source..)

mytag.setBarcode("12345"); // add the item code

mytag.toString(); // use this hex string for interaction with the tag - the CRC is updated already

mytag.Barcode(); // reads the item code

Find some more ideas in the test cases below src/test/java!