コード例 #1
0
        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());
            }
        }
コード例 #2
0
        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
            }
        }
コード例 #3
0
        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]);
                }
            }
        }
コード例 #4
0
 private void onReceiveVersion(ZWaveContext context, ZWaveMessage message)
 {
     context.ProtocolVersion = Utils.ByteSubstring(message.Message, 11, 2);
     context.ApplicationVersion = Utils.ByteSubstring(message.Message, 13, 2);
 }
コード例 #5
0
 private void LoadMemoryId_OnReceive(ZWaveContext context, ZWaveMessage message)
 {
     context.HomeId = Utils.ByteSubstring(message.Message, 4, 4);
     context.ControllerId = message.Message[8];
 }