Пример #1
0
 public UnsubscribedMessageEventArgs(ZWaveMessage message)
     : base()
 {
     this.Message = message;
 }
Пример #2
0
 public void FireUnsubscribedMessageEvent(ZWaveMessage message)
 {
     Utils.SafeEventFire(this, new UnsubscribedMessageEventArgs(message), UnsubscribedMessageEvent);
 }
Пример #3
0
        /// <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);
                }
            }
        }
Пример #4
0
 public void AddResponse(ZWaveMessage message)
 {
     this.RemoveTimeout();
     this._response.Enqueue(message);
     this.FireResponseReceivedEvent();
 }