private void LoadNodes() { CoApDeviceFinder finder = (CoApDeviceFinder)NetworkInterface.Instance.NodeFinder; CoApDevices devices = finder.LoadNodes(); foreach (CoApDevice d in devices) { lstDevices.Items.Add(d.Name); } }
/// <summary> /// Load devices based on the network interface settings. /// For each valid device, load a list of related CoAP resources. /// </summary> private void LoadNodes() { Cursor.Current = Cursors.WaitCursor; // Show as buys while loading the resources. FileLogger.Write("Loading all known devices"); // Load the correct device class based on current network option CoApDeviceFinder finder = (CoApDeviceFinder)NetworkInterface.Instance.NodeFinder; CoApDevices devices = new CoApDevices(); try { // With the Ping change, we are capturing the gateway credentials earlier than we had planned. //SetGatewayCoapApiCredentials(); devices = finder.LoadNodes(); } catch (Exception devFail) { MessageBox.Show("Device fetch failed - " + devFail.Message); return; } // Loop through all fetched devices. // If the device was successfully pinged, then we can load related resources. // Otherwise, we ignore it. foreach (CoApDevice d in devices) { TreeNode deviceNode = treeDevices.Nodes.Add(d.Name); if (d.Reachable) { deviceNode.ForeColor = treeDevices.ForeColor; if (NetworkInterface.Instance.UsingGateway) { CoAPSettings.Instance.AddressFamily = System.Net.Sockets.AddressFamily.InterNetwork; } if (NetworkInterface.Instance.UsingSimulator) { CoAPSettings.Instance.AddressFamily = System.Net.Sockets.AddressFamily.InterNetworkV6; } // We should never get here, but this is added in case we add other communication methods later. if (!NetworkInterface.Instance.UsingGateway && !NetworkInterface.Instance.UsingSimulator) { if (HdkUtils.IsIPv4Address(d.Name)) { CoAPSettings.Instance.AddressFamily = System.Net.Sockets.AddressFamily.InterNetwork; } else { CoAPSettings.Instance.AddressFamily = System.Net.Sockets.AddressFamily.InterNetworkV6; } } // We need to load the credentials if they have not already been set. bool credentialsOk = true; //if (NetworkInterface.Instance.UsingGateway) //{ // credentialsOk = SetGatewayCoapApiCredentials(); //} // Check to see if we are ready to load resources related to a device. if (__LoadResources && credentialsOk) { //d.Resources = LoadResources(deviceNode); } } // Unreachable devices will be grayed out. else { deviceNode.ForeColor = Color.Gray; } } // Expand the tree so that all loaded devices and resources are visible. treeDevices.ExpandAll(); Cursor.Current = Cursors.Default; // Clear the "busy" cursor }