Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c58c3f1a authored by Martijn Coenen's avatar Martijn Coenen Committed by Jeff Hamilton
Browse files

Implement additional Mifare Ultralight convenience methods.

Change-Id: I8d9dfadb5911b2d11d1ba6dcf1381decbb8386ef
parent 0d27f999
Loading
Loading
Loading
Loading
+31 −8
Original line number Diff line number Diff line
@@ -72,6 +72,37 @@ public final class MifareUltralight extends BasicTagTechnology {
        return transceive(blockread_cmd);
    }

    /**
     * @throws IOException
     */
    public byte[] readOTP() throws IOException {
        checkConnected();

        return readBlock(3); // OTP is at page 3
    }

    public void writePage(int block, byte[] data) throws IOException {
        checkConnected();

        byte[] pagewrite_cmd = new byte[data.length + 2];
        pagewrite_cmd[0] = (byte) 0xA2;
        pagewrite_cmd[1] = (byte) block;
        System.arraycopy(data, 0, pagewrite_cmd, 2, data.length);

        transceive(pagewrite_cmd);
    }

    public void writeBlock(int block, byte[] data) throws IOException {
        checkConnected();

        byte[] blockwrite_cmd = new byte[data.length + 2];
        blockwrite_cmd[0] = (byte) 0xA0;
        blockwrite_cmd[1] = (byte) block;
        System.arraycopy(data, 0, blockwrite_cmd, 2, data.length);

        transceive(blockwrite_cmd);
    }

    /**
     * Send data to a tag and receive the response.
     * <p>
@@ -99,12 +130,4 @@ public final class MifareUltralight extends BasicTagTechnology {
        }
    }

    /**
     * @throws IOException
     */
    /*
    public byte[] readOTP();
    public void writePage(int block, byte[] data);
    public void writeBlock(int block, byte[] data);
     */
}