private WfdDeviceDescriptor PerformWildcardDiscovery() { WfdDeviceDescriptor discoveredDeviceDescriptor = null; // // Perform the discovery // WiFiDirectTestLogger.Log("Performing wildcard discovery for device {0} ({1}) as {2}, Timeout: {3} ms, Discovery Type: {4}", remoteWFDController.DeviceAddress, remoteWFDController.MachineName, GetFriendlyStringForDiscoveryScenarioType(discoveryScenarioType), searchTimeoutMs, GetFriendlyStringForDiscoverType(discoverType) ); List <WfdDeviceDescriptor> discoveryResults = localWFDController.DiscoverDevices(searchTimeoutMs, discoverType); WiFiDirectTestLogger.Log("Discovery returned {0} results.", discoveryResults == null ? 0 : discoveryResults.Count); if (discoveryResults != null) { foreach (WfdDeviceDescriptor discoveryResult in discoveryResults) { if (discoveryResult.DeviceAddress == remoteWFDController.DeviceAddress) { WiFiDirectTestLogger.Log("Target device {0} ({1}) found in discovery results", remoteWFDController.DeviceAddress, remoteWFDController.MachineName); if (discoveryScenarioType == DiscoveryScenarioType.DiscoverAsGo && !discoveryResult.GroupCapabilities.GroupOwner) { WiFiDirectTestLogger.Error("Expected to find device {0} ({1}) as a group owner, but there's no GO running on the device.", remoteWFDController.DeviceAddress, remoteWFDController.MachineName); } else { discoveredDeviceDescriptor = discoveryResult; } break; } } } if (discoveredDeviceDescriptor == null) { WiFiDirectTestLogger.Error("Target device {0} ({1}) not found.", remoteWFDController.DeviceAddress, remoteWFDController.MachineName); } return(discoveredDeviceDescriptor); }
private WfdDeviceDescriptor PerformTargetedDiscovery() { DOT11_WFD_DISCOVER_DEVICE_FILTER_BITMASK deviceFilterBitmask; switch (discoveryScenarioType) { case DiscoveryScenarioType.DiscoverAsDevice: deviceFilterBitmask = DOT11_WFD_DISCOVER_DEVICE_FILTER_BITMASK.Device; break; case DiscoveryScenarioType.DiscoverAsGo: deviceFilterBitmask = DOT11_WFD_DISCOVER_DEVICE_FILTER_BITMASK.GO; break; default: throw new Exception("Unable to map from discovery scenario type to discovery filter bitmask"); } // // Perform the discovery // WiFiDirectTestLogger.Log("Performing targetted discovery for device {0} ({1}) as {2}, Timeout: {3} ms, Discovery Type: {4}", remoteWFDController.DeviceAddress, remoteWFDController.MachineName, GetFriendlyStringForDiscoveryScenarioType(discoveryScenarioType), searchTimeoutMs, GetFriendlyStringForDiscoverType(discoverType) ); WfdDeviceDescriptor discoveredDeviceDescriptor = localWFDController.PerformTargetedDiscovery( remoteWFDController.DeviceAddress, deviceFilterBitmask, searchTimeoutMs, discoverType ); if (discoveredDeviceDescriptor == null) { WiFiDirectTestLogger.Error("Target device {0} ({1}) not found.", remoteWFDController.DeviceAddress, remoteWFDController.MachineName); } return(discoveredDeviceDescriptor); }