コード例 #1
0
        /// <summary>
        /// Method which handles the events raised by the ZWave network
        /// </summary>
        /// <param name="m_notification"></param>
        private static void NotificationHandler(ZWNotification m_notification)
        {
            if (m_notification == null) { return; }

            switch (m_notification.GetType())
            {
                case ZWNotification.Type.ValueAdded:
                    {
                        Node node = GetNode(m_notification.GetHomeId(), m_notification.GetNodeId());
                        if (node != null)
                            node.AddValue(m_notification.GetValueID());
                        break;
                    }
                case ZWNotification.Type.ValueRemoved:
                    {
                        Node node = GetNode(m_notification.GetHomeId(), m_notification.GetNodeId());
                        if (node != null)
                            node.RemoveValue(m_notification.GetValueID());
                        break;
                    }
                case ZWNotification.Type.ValueChanged:
                    {
                        Node node = GetNode(m_notification.GetHomeId(), m_notification.GetNodeId());
                        if (node != null)
                            node.SetValue(m_notification.GetValueID());
                        break;
                    }
                case ZWNotification.Type.NodeAdded:
                    {
                        Node node = new Node();
                        node.ID = m_notification.GetNodeId();
                        node.HomeID = m_notification.GetHomeId();
                        m_nodeList.Add(node);
                        break;
                    }
                case ZWNotification.Type.NodeRemoved:
                    {
                        foreach (Node node in m_nodeList)
                        {
                            if (node.ID == m_notification.GetNodeId())
                            {
                                m_nodeList.Remove(node);
                                break;
                            }
                        }
                        break;
                    }
                case ZWNotification.Type.NodeProtocolInfo:
                    {
                        Node node = GetNode(m_notification.GetHomeId(), m_notification.GetNodeId());
                        if (node != null)
                            node.Label = m_manager.GetNodeType(m_homeId, node.ID);
                        break;
                    }
                case ZWNotification.Type.NodeNaming:
                    {
                        Node node = GetNode(m_notification.GetHomeId(), m_notification.GetNodeId());
                        if (node != null)
                        {
                            node.Manufacturer = m_manager.GetNodeManufacturerName(m_homeId, node.ID);
                            node.Product = m_manager.GetNodeProductName(m_homeId, node.ID);
                            node.Location = m_manager.GetNodeLocation(m_homeId, node.ID);
                            node.Name = m_manager.GetNodeName(m_homeId, node.ID);
                        }
                        break;
                    }
                case ZWNotification.Type.DriverReady:
                    {
                        m_homeId = m_notification.GetHomeId();
                        break;
                    }
                case ZWNotification.Type.AllNodesQueried:
                    {
                        m_nodesReady = true;
                        break;
                    }
                default:
                    break;
            }
        }
コード例 #2
0
 private static ZWValueID GetValueID(Node node, string valueLabel)
 {
     foreach (ZWValueID valueID in node.Values)
         if (m_manager.GetValueLabel(valueID) == valueLabel)
             return valueID;
     return null;
 }