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); }
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); } }