/// <summary> /// Create from an input byte array from the power line modem. /// </summary> /// <param name="data">The input data</param> public InsteonPacket(byte[] data) { FromAddress = new DeviceId(data[0], data[1], data[2]); ToAddress = new DeviceId(data[3], data[4], data[5]); Flags = new InsteonFlags(); Flags.FromByte(data[6]); Command1 = data[7]; Command2 = data[8]; UserData = new byte[data.Length - 9]; Array.Copy(data, 9, UserData, 0, data.Length - 9); }
/// <summary> /// Create a new standard length command. /// </summary> /// <param name="id">id to sent to</param> /// <param name="cmd">cmd1 bit</param> /// <param name="cmd2">cmd2 bit</param> public InsteonPacket(DeviceId id, Command cmd, byte cmd2) { Command1 = (byte)cmd; Command2 = cmd2; FromAddress = id; ToAddress = id; flags = new InsteonFlags(); flags.MessageType = InsteonFlags.MessageTypeEnum.Direct; flags.MaxHops = 0x3; flags.HopsLeft = 0x3; }
/// <summary> /// Creates an insteon packet with an extended command. /// </summary> /// <param name="id"></param> /// <param name="cmd"></param> public InsteonPacket(DeviceId id, ExtendedCommand cmd, byte cmd2, byte[] data) { Command1 = (byte)((int)cmd >> 8); Command2 = (byte)(((int)cmd & 0xff) | cmd2); UserData = data; FromAddress = id; ToAddress = id; flags = new InsteonFlags(); flags.MessageType = InsteonFlags.MessageTypeEnum.Direct; flags.ExtendedMessage = true; flags.MaxHops = 0x3; flags.HopsLeft = 0x3; }