public ApduCollection TransmitAPDU(IZvtApdu apdu) { foreach (IApduHandler apduHandler in _apduHandlers) { apduHandler.StartCommand(); } _transport.Transmit(_transport.CreateTpdu(apdu)); ApduCollection responses = new ApduCollection(); while (true) { byte[] apduData = _transport.ReceiveResponsePacket(); byte[] apduCopy = new byte[apduData.Length]; Array.Copy(apduData, apduCopy, apduData.Length); IZvtApdu responseApdu = ApduResponse.Create(apduData); if (responseApdu == null) { throw new ArgumentException("Could not retrieve response"); } if (this.ResponseReceived != null) { ResponseReceived(responseApdu); } responses.Add(responseApdu); CallResponseApduHandlers(apdu, responseApdu); if (IsCompletionPacket == null && InternalIsCompletionPacket(apdu, responseApdu)) { break; } else if (IsCompletionPacket != null && IsCompletionPacket(apdu, responseApdu)) { break; } } return(responses); }
public void Process(IZvtApdu requestApdu, IZvtApdu responseApdu) { _transport.Transmit(_transport.CreateTpdu(new StatusApdu())); }