Package org.nfctools.examples.hce

Source Code of org.nfctools.examples.hce.HostCardEmulationTagScanner

package org.nfctools.examples.hce;

import javax.smartcardio.Card;
import javax.smartcardio.CardException;
import javax.smartcardio.CardTerminal;

import org.nfctools.api.TagType;
import org.nfctools.scio.TerminalStatus;
import org.nfctools.spi.acs.AbstractTerminalTagScanner;
import org.nfctools.spi.acs.ApduTagReaderWriter;

public class HostCardEmulationTagScanner extends AbstractTerminalTagScanner {

  protected HostCardEmulationTagScanner(CardTerminal cardTerminal) {
    super(cardTerminal);
  }

  @Override
  public void run() {
    while (!Thread.interrupted()) {
      notifyStatus(TerminalStatus.WAITING);
      try {
        Card card = cardTerminal.connect("direct");
        ApduTagReaderWriter readerWriter = new ApduTagReaderWriter(new AcsDirectChannelTag(TagType.ISO_DEP,
            null, card));
        try {
          IsoDepTamaCommunicator tamaCommunicator = new IsoDepTamaCommunicator(readerWriter, readerWriter);
          tamaCommunicator.connectAsInitiator();
        }
        catch (Exception e1) {
          card.disconnect(true);
          e1.printStackTrace();
          try {
            Thread.sleep(1000);
          }
          catch (InterruptedException e) {
            break;
          }
        }
        finally {
          waitForCardAbsent();
        }
      }
      catch (CardException e) {
        e.printStackTrace();
        break;
      }
    }
  }
}
TOP

Related Classes of org.nfctools.examples.hce.HostCardEmulationTagScanner

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.