private byte[] GetBlockData(NdefMessage ndef) { byte[] msg = ndef.ToBytes(); byte[] info = new byte[Felica.BLOCK_LENGTH]; //ndef version info[0] = 0x10; info[1] = 0x04; info[2] = 0x01; //available block EndianConverter.SetUIntToBytes((ushort)AVAILABLE_BLOCK, info, 3); //read only info[10] = 0x00; //data length byte[] len = EndianConverter.UIntergerToBytes((uint)msg.Length); Array.Copy(len, 1, info, 11, 3); //check sum int sum = 0; for (int i = 0; i < 14; i++) { sum += info[i]; } EndianConverter.SetUIntToBytes((ushort)sum, info, 14); byte[] data = new byte[BLOCK_COUNT * Felica.BLOCK_LENGTH]; int index = 0; info.CopyTo(data, 0); index += info.Length; msg.CopyTo(data, index); return data; }
public Type3TagController(FakeFelica fFelica, byte[] idm, NdefMessage ndef) : base(fFelica, idm) { data = GetBlockData(ndef); systemCode = new ushort[] { SYSTEM_CODE }; }