Exemplo n.º 1
0
        public static async Task <byte[]> DoFastRead(
            this INFCMiFareTag tag,
            byte from,
            byte to,
            byte batchSize)
        {
            var results = new List <MifareCommandResult>();

            while (from < to)
            {
                var thisTo = (byte)Math.Min(from + batchSize, to);
                var data   = await tag.SendMifareCommand(0x3a, from, thisTo);

                results.Add(data);

                from = (byte)(from + (byte)(batchSize + 0x1));
            }

            if (results.Any(x => x.Error != null))
            {
                throw new Exception($"Failed to fast read; first error: {results.First(x => x.Error != null).Error}");
            }

            var all = MifareCommandResult.Combine(results);

            return(all.Data);
        }
Exemplo n.º 2
0
        public static Task <MifareCommandResult> SendMifareCommand(
            this INFCMiFareTag tag, params byte[] command)
        {
            var tcs = new TaskCompletionSource <MifareCommandResult>();

            tag.SendMiFareCommand(
                NSData.FromArray(command),
                (data, err) => tcs.SetResult(MifareCommandResult.From(data, err)));

            return(tcs.Task);
        }