private void ExecuteInternal() { try { WiFiDirectTestLogger.Log("Beginning Discover/Connect scenario"); // Do all discovers foreach (var discoveryParams in discoveryConnectParameters.DiscoveryParameters) { var discoveryScenario = new ServicesDiscoveryScenario(seekerTestController, advertiserTestController, discoveryParams); ServicesDiscoveryScenarioResult discoveryResult = discoveryScenario.Execute(); discoveryResults.Add(discoveryResult); if (!discoveryResult.ScenarioSucceeded) { throw new Exception("Discovery failed!"); } } // BUG: [TH2] Fix race on back-to-back discoveries Task.Delay(500).Wait(); // Do all connects foreach (var connectPreParams in discoveryConnectParameters.ConnectParameters) { // Need to translate indices to handles if (connectPreParams.DiscoveryResultIndex > discoveryResults.Count || connectPreParams.DiscoveryResultIndex < 0 || connectPreParams.DiscoveredHandleIndex > discoveryResults[connectPreParams.DiscoveryResultIndex].DiscoveryHandles.Count || connectPreParams.DiscoveredHandleIndex < 0) { throw new Exception("Bad connect parameters! Index out of range for discovered device"); } WFDSvcWrapperHandle discoveredDevice = discoveryResults[connectPreParams.DiscoveryResultIndex].DiscoveryHandles[connectPreParams.DiscoveredHandleIndex]; // Now run scenario ServicesConnectParameters connectParams = new ServicesConnectParameters( discoveredDevice, connectPreParams.AdvertiserHandle, connectPreParams.Options ); var connectScenario = new ServicesConnectScenario(seekerTestController, advertiserTestController, connectParams); ServicesConnectScenarioResult connectResult = connectScenario.Execute(); connectResults.Add(connectResult); if (!connectResult.ScenarioSucceeded) { throw new Exception("Connect failed!"); } } succeeded = true; } catch (Exception e) { WiFiDirectTestLogger.Error("Caught exception while executing service discover/connect scenario: {0}", e); } }
ServicesConnectScenarioResult ExecuteConnectScenario(ServicesConnectParameters connectParams) { ServicesConnectScenario scenario = new ServicesConnectScenario( localWFDController, remoteWFDController, connectParams ); ServicesConnectScenarioResult scenarioResult = scenario.Execute(); Verify.IsTrue(scenarioResult.ScenarioSucceeded); return(scenarioResult); }