private void SendDisconnect() { SessionControl commandKmmBody = new SessionControl(); commandKmmBody.SessionControlOpcode = SessionControl.ScOpcode.Disconnect; commandKmmBody.SourceDeviceType = SessionControl.ScSourceDeviceType.Kfd; KmmFrame commandKmmFrame = new KmmFrame(commandKmmBody); byte[] toRadio = commandKmmFrame.ToBytesWithPreamble(0x00); byte[] fromRadio = PerformKmmTransfer(toRadio); KmmFrame responseKmmFrame = new KmmFrame(true, fromRadio); KmmBody responseKmmBody = responseKmmFrame.KmmBody; if (responseKmmBody is SessionControl) { SessionControl kmm = responseKmmBody as SessionControl; if (kmm.SessionControlOpcode != SessionControl.ScOpcode.DisconnectAck) { throw new Exception(string.Format("received unexpected session control opcode (0x{0:X2}) {1}", (byte)kmm.SessionControlOpcode, kmm.SessionControlOpcode.ToString())); } } else { throw new Exception("unexpected kmm"); } }
private void Mfid90SendDisconnect() { Mfid90SessionControlVer1 commandKmmBody = new Mfid90SessionControlVer1(); commandKmmBody.SessionControlOpcode = Mfid90SessionControlVer1.ScOpcode.Disconnect; commandKmmBody.SourceDeviceType = Mfid90SessionControlVer1.ScSourceDeviceType.Kfd; commandKmmBody.IsSessionTypeIncluded = false; KmmFrame commandKmmFrame = new KmmFrame(commandKmmBody); byte[] toRadio = commandKmmFrame.ToBytesWithPreamble(0x90); byte[] fromRadio = PerformKmmTransfer(toRadio); KmmFrame responseKmmFrame = new KmmFrame(true, fromRadio); KmmBody responseKmmBody = responseKmmFrame.KmmBody; if (responseKmmBody is Mfid90SessionControlVer1) { Mfid90SessionControlVer1 kmm = responseKmmBody as Mfid90SessionControlVer1; if (kmm.SessionControlOpcode != Mfid90SessionControlVer1.ScOpcode.DisconnectAck) { throw new Exception(string.Format("received unexpected session control opcode (0x{0:X2}) {1}", (byte)kmm.SessionControlOpcode, kmm.SessionControlOpcode.ToString())); } } else { throw new Exception("unexpected kmm"); } }
private KmmBody TxRxKmm(KmmBody commandKmmBody) { KmmFrame commandKmmFrame = new KmmFrame(commandKmmBody); byte[] toRadio = WithPreamble ? commandKmmFrame.ToBytesWithPreamble(Mfid) : commandKmmFrame.ToBytes(); byte[] fromRadio = DeviceProtocol.PerformKmmTransfer(toRadio); KmmFrame responseKmmFrame = new KmmFrame(WithPreamble, fromRadio); return(responseKmmFrame.KmmBody); }