private void onReceiveMessage(ZWaveContext context, ZWaveMessage message) { var response = message.Message; var foundNodes = new List<byte>(); for (var i = 7; i < 35; i++) { for (var j = 0; j < 8; j++) { if ((response[i] & (0x01 << j)) != 0) { var nodeId = (byte)((i - 7) * 8 + (j + 1)); if (nodeId != context.ControllerId) { foundNodes.Add(nodeId); } } } } if (foundNodes.Any()) { context.DoParallelFor(foundNodes.Select(x => new LoadNodeProtocolInfo(x)).ToArray()); context.DoParallelFor(foundNodes.Select(x => new LoadNodeCapabilities(x)).ToArray()); } }
private void onReceiveResponse(ZWaveContext context, ZWaveMessage message) { var msg = message.Message; var sleeping = !((msg[4] & (0x01<<7)) > 0x00); lock (context) { context.Nodes.Add( new ZWaveNode { NodeId = Data.NodeId, Sleeping = sleeping, Basictype = (ZWaveType.Basic)msg[7], GenericType = (ZWaveType.Generic)msg[8], SpecificType = (ZWaveType.Specific)msg[9] }); #if DEBUG context.WorkUnitContext.LogLine( "\tNodeID: {0}, Sleeping: {1}, Basic Type: {2}, Generic Type: {3}, Specific Type: {4}", Data.NodeId, sleeping, context.Nodes.Last().Basictype.ToString(), context.Nodes.Last().GenericType.ToString(), context.Nodes.Last().SpecificType.ToString()); #endif } }
private void onReceiveResponse(ZWaveContext context, ZWaveMessage message) { for (var i = 10; i < 6 + message.Message[6]; i++) { var node = context.Nodes.FirstOrDefault(x => x.NodeId == Data.NodeId); if (node != null) { if (node.Capabilities == null) { node.Capabilities = new List<ZWaveCommandClass>(); } node.Capabilities.Add((ZWaveCommandClass)message.Message[i]); } } }
private void onReceiveVersion(ZWaveContext context, ZWaveMessage message) { context.ProtocolVersion = Utils.ByteSubstring(message.Message, 11, 2); context.ApplicationVersion = Utils.ByteSubstring(message.Message, 13, 2); }
private void LoadMemoryId_OnReceive(ZWaveContext context, ZWaveMessage message) { context.HomeId = Utils.ByteSubstring(message.Message, 4, 4); context.ControllerId = message.Message[8]; }