/// <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; } }
private static ZWValueID GetValueID(Node node, string valueLabel) { foreach (ZWValueID valueID in node.Values) if (m_manager.GetValueLabel(valueID) == valueLabel) return valueID; return null; }