Esempio n. 1
0
 bool InsteonNetworkBridge.IMessageProcessor.ProcessEcho(byte[] data, int offset, out int count)
 {
     byte[] message = Utilities.ArraySubset(data, offset, sentMessage.Length);
     if (echoCommand)
     {
         if (InsteonMessageProcessor.ProcessMessage(data, offset, out count, out echoMessage))
         {
             Log.WriteLine("PROCESSOR: Echo '{0}' processed...\r\n{1}", Utilities.ByteArrayToString(data, offset, count), echoMessage.ToString("Log"));
             return(true);
         }
         else
         {
             return(false);
         }
     }
     else if (Utilities.ArraySequenceEquals(sentMessage, message))
     {
         count = sentMessage.Length;
         Log.WriteLine("PROCESSOR: Echo '{0}' matched", Utilities.ByteArrayToString(data, offset, count));
         return(true);
     }
     else
     {
         count = 0;
         return(false);
     }
 }
        public static bool ProcessMessage(byte[] data, int offset, out int count, out InsteonMessage message)
        {
            message = null;
            count   = 0;
            if (data.Length <= offset)
            {
                return(false);
            }

            switch (data[offset])
            {
            case 0x50: return(InsteonMessageProcessor.StandardMessage(data, offset, out count, out message));

            case 0x51: return(InsteonMessageProcessor.ExtendedMessage(data, offset, out count, out message));

            case 0x53: return(InsteonMessageProcessor.DeviceLinkMessage(data, offset, out count, out message));

            case 0x57: return(InsteonMessageProcessor.DeviceLinkRecordMessage(data, offset, out count, out message));

            case 0x58: return(InsteonMessageProcessor.DeviceLinkCleanupMessage(data, offset, out count, out message));

            case 0x60: return(InsteonMessageProcessor.GetIMInfo(data, offset, out count, out message));
            }

            return(false);
        }
Esempio n. 3
0
        bool InsteonNetworkBridge.IMessageProcessor.ProcessMessage(byte[] data, int offset, out int count)
        {
            InsteonMessage message;

            if (InsteonMessageProcessor.ProcessMessage(data, offset, out count, out message))
            {
                if (!IsDuplicateMessage(message))
                {
                    Log.WriteLine("PROCESSOR: Message '{0}' processed...\r\n{1}", Utilities.ByteArrayToString(data, offset, count), message.ToString("Log"));
                    OnMessage(message);
                    UpdateWaitItems(message);
                }
                else
                {
                    Log.WriteLine("PROCESSOR: Message '{0}' duplicate ignored...\r\n{1}", Utilities.ByteArrayToString(data, offset, count), message.ToString("Log"));
                }
                return(true);
            }
            else
            {
                return(false);
            }
        }