public UnsubscribedMessageEventArgs(ZWaveMessage message) : base() { this.Message = message; }
public void FireUnsubscribedMessageEvent(ZWaveMessage message) { Utils.SafeEventFire(this, new UnsubscribedMessageEventArgs(message), UnsubscribedMessageEvent); }
/// <summary> /// Message processing /// </summary> /// <param name="bufSeg">An ArraySegment for the buffer to be processed</param> /// <param name="job">The ZwaveJob to be processed</param> private void ProcessMessage(ArraySegment<byte> bufSeg, ZWaveJob job) { // Read the length byte byte len = bufSeg.Array[ZWaveProtocol.MessageBufferOffsets.MessageLength + bufSeg.Offset]; // Read rest of the frame byte[] message = Utils.ByteSubstring(bufSeg.Array, bufSeg.Offset, bufSeg.Count); DebugLogger.Logger.Trace("Received: " + Utils.ByteArrayToString(message)); ZWaveMessage zMessage = null; try { zMessage = new ZWaveMessage(message); //Checksum is correct SendACKToPort(); } catch (MessageChecksumInvalidException ex) { DebugLogger.Logger.Error("Message Checksum invalid. Sending NAK.\nMessage: {0}", Utils.ByteArrayToString(message)); SendNAKToPort(); return; } if (job == null) { // Incoming response? DebugLogger.Logger.Trace("*** Incoming response"); this.FireUnsubscribedMessageEvent(zMessage); } else { if (job.AwaitACK) { // We wanted an ACK instead. Resend... ResendCurrentJob(resendReason.ExpectingACK); } else { job.AddResponse(zMessage); this.FireUnsubscribedMessageEvent(zMessage); } } }
public void AddResponse(ZWaveMessage message) { this.RemoveTimeout(); this._response.Enqueue(message); this.FireResponseReceivedEvent(); }