public void MultiEncapDecap() { var crc16Command = Crc16Command.Encapsulate(MultiChannelCommand.Encapsulate(0, 1, new Command(CommandClass.Basic, 0x02))); Assert.AreEqual(crc16Command.CommandClass, CommandClass.Crc16Encap); Assert.AreEqual(crc16Command.CommandID, 0x01); var multiChannelCommand = (MultiChannelCommand)crc16Command.Decapsulate(); Assert.AreEqual(multiChannelCommand.SourceEndpointID, 0); Assert.AreEqual(multiChannelCommand.TargetEndpointID, 1); Assert.AreEqual(multiChannelCommand.CommandClass, CommandClass.MultiChannel); Assert.AreEqual(multiChannelCommand.CommandID, 0x0D); var basicCommand = multiChannelCommand.Decapsulate(); Assert.AreEqual(basicCommand.CommandClass, CommandClass.Basic); Assert.AreEqual(basicCommand.CommandID, 0x02); var commands = Encapsulation.Flatten(crc16Command).ToArray(); Assert.AreEqual(commands.Length, 3); crc16Command = (Crc16Command)commands[0]; Assert.AreEqual(crc16Command.CommandClass, CommandClass.Crc16Encap); Assert.AreEqual(crc16Command.CommandID, 0x01); multiChannelCommand = (MultiChannelCommand)commands[1]; Assert.AreEqual(multiChannelCommand.SourceEndpointID, 0); Assert.AreEqual(multiChannelCommand.TargetEndpointID, 1); Assert.AreEqual(multiChannelCommand.CommandClass, CommandClass.MultiChannel); Assert.AreEqual(multiChannelCommand.CommandID, 0x0D); basicCommand = commands[2]; Assert.AreEqual(basicCommand.CommandClass, CommandClass.Basic); Assert.AreEqual(basicCommand.CommandID, 0x02); }
public void Crc16EncapCommandDeserialize() { // SDS12657-12-Z-Wave-Command-Class-Specification-A-M.pdf | 4.41.1 CRC-16 Encapsulated Command // 4.41.2 Example // CRC - 16 Encapsulation Command Class = 0x56 // CRC - 16 Encapsulation Command = 0x01 // Basic Command Class = 0x20 // Basic Get Command = 0x02 // CRC1 = 0x4D // CRC2 = 0x26 var payload = new Payload(new byte[] { (byte)CommandClass.Crc16Encap, 0x01, (byte)CommandClass.Basic, 0x02, 0x4D, 0x26 }); var command = Encapsulation.Flatten(Command.Parse(payload)).Last(); Assert.AreEqual(command.CommandClass, CommandClass.Basic); Assert.AreEqual(command.CommandID, 0x02); }