2 * MagnaCartaReader.java
4 * Copyright (C) 2014 Jakob Wenzel
7 * Jakob Wenzel <jakobwenzel92@gmail.com>
9 * This program is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation, either version 3 of the License, or
12 * (at your option) any later version.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with this program. If not, see <http://www.gnu.org/licenses/>.
23 package de.dhbwloe.campusapp.nfcreader.cardreader;
25 import android.util.Log;
27 import com.codebutler.farebot.card.desfire.DesfireException;
28 import com.codebutler.farebot.card.desfire.DesfireProtocol;
30 import java.io.IOException;
32 public class MagnaCartaReader implements ICardReader {
33 private static final String TAG = MagnaCartaReader.class.getName();
35 public NfcCardData readCard(DesfireProtocol card) {
36 final int appId = 0xF080F3;
39 //We don't want to use getFileSettings as they are doing some weird stuff with the fileType
41 card.selectApp(appId);
43 //For some reason we can't use getFileList either, because the card answers with an
44 //authentication error
46 byte[] data = card.readFile(fileId);
48 int low = ((int) data[7]) & 0xFF;
49 int hi = ((int) data[6]) & 0xFF;
51 int value = hi<<8 | low;
52 NfcCardData cardData = new NfcCardData();
53 cardData.setUniqueId(card.getManufacturingData().uid);
55 cardData.appendNamedData("balance", cardData.intToBytes(value*10));
56 } catch (IOException e) {
61 } catch (DesfireException e) {
62 Log.w(TAG, "Exception while reading tag");