public bool VerifyResponse(IDebugResponse response, DebugRequest request) { // Type of echoed request must match if (response.RequestEcho.GetType() != request.GetType()) { return(false); } // TODO: Compare contents of both request messages return(true); }
internal T SendAndReceive <T>(DebugRequest request, int timeout = 1000) where T : class, IDebugResponse { signal.Reset(); port.SendRequest(request); if (!signal.WaitOne(timeout)) { Logger.Current.Warning("Response not received in time."); return(null); } // Verify that request is echoed correctly // TODO: Implement equality operator for each request type // if (lastResponse.Echo != request) return null; IDebugResponse response = responses.Dequeue(); return(response as T); }
internal bool SendAndWait(DebugRequest request, int timeout = 1000) { signal.Reset(); port.SendRequest(request); if (!signal.WaitOne(timeout)) { Logger.Current.Warning("Response not received in time."); return(false); } // Check whether right response was received while (responses.Count > 0) { IDebugResponse response = responses.Dequeue(); if (VerifyResponse(response, request)) { return(true); } } return(false); }
private SerialPort serialPort; //"COM6", 62500, Parity.Space, public void SendRequest(DebugRequest request) { byte[] buffer = request.ToByteArray(); serialPort.Write(buffer, 0, buffer.Length); }