Examples

Introduction

This page present some examples to help developers which use libnfc.

Simple tag UID reader.

This short commented code example should be helpful to quick start development with libnfc, it grab the first available NFC device and print the first found ISO14443-A tag (e.g. MIFARE Classic, MIFARE Ultralight).

#ifdef HAVE_CONFIG_H
  #include "config.h"
#endif // HAVE_CONFIG_H

#include <stdlib.h>
#include <nfc/nfc.h>

int main(int argc, const char* argv[])
{
  nfc_device_t* pnd;
  nfc_target_info_t nti;

  // Display libnfc version
  const char* acLibnfcVersion = nfc_version();
  printf("%s use libnfc %s\n", argv[0], acLibnfcVersion);

  // Connect using the first available NFC device
  pnd = nfc_connect(NULL);

  if (pnd == NULL) {
      printf("Unable to connect to NFC device.");
      return EXIT_FAILURE;
  }

  // Set connected NFC device to initiator mode
  nfc_initiator_init(pnd);

  // Drop the field for a while
  nfc_configure(pnd,NDO_ACTIVATE_FIELD,false);

  // Let the reader only try once to find a tag
  nfc_configure(pnd,NDO_INFINITE_SELECT,false);

  // Configure the CRC and Parity settings
  nfc_configure(pnd,NDO_HANDLE_CRC,true);
  nfc_configure(pnd,NDO_HANDLE_PARITY,true);

  // Enable field so more power consuming cards can power themselves up
  nfc_configure(pnd,NDO_ACTIVATE_FIELD,true);

  printf("Connected to NFC reader: %s\n",pnd->acName);

  // Poll for a ISO14443A (MIFARE) tag
  if (nfc_initiator_select_tag(pnd,NM_ISO14443A_106,NULL,0,&nti)) {
      printf("The following (NFC) ISO14443A tag was found:\n");
      printf("    ATQA (SENS_RES): "); print_hex(nti.nai.abtAtqa,2);
      printf("       UID (NFCID%c): ",(nti.nai.abtUid[0]==0x08?'3':'1')); print_hex(nti.nai.abtUid,nti.nai.szUidLen);
      printf("      SAK (SEL_RES): "); print_hex(&nti.nai.btSak,1);
      if (nti.nai.szAtsLen) {
    printf("          ATS (ATR): ");
    print_hex(nti.nai.abtAts,nti.nai.szAtsLen);
      }
  }

  // Disconnect from NFC device
  nfc_disconnect(pnd);
  return EXIT_SUCCESS;
}

Generated on Tue Apr 6 23:24:09 2010 for libnfc by  doxygen 1.6.1