Esempio n. 1
0
        public void AutoAcceptSessionInfo()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                string serviceName = remoteWFDController.GenerateUniqueServiceName();

                // Now test ASPCP messages for session info
                ServicesPublishDiscoverConnectParameters pdcParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    new ServicesConnectOptions(
                        callGetProvisioningInfo: true,
                        preferredConfigMethod: WiFiDirectServiceConfigurationMethod.Default, // seeker
                        validateData: true,
                        expectDeferred: false,
                        sessionInfo: "abcd123"                      // This should still be sent to advertiser
                        ),
                    configMethods: ServicePublishConfigMethods.Any, // advertiser
                    autoAccept: true,
                    deferredSessionInfo: "zyxw987"                  // want to make sure this isn't seen by seeker
                    );
                var pdcResults = ExecutePublishDiscoverConnectScenario(pdcParams);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        pdcResults.ConnectResults[0].SeekerSessionHandle,
                        pdcResults.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );
            }
        }
Esempio n. 2
0
        public void DeferredPairDefaultConfig()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Connect
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverConnectParameters connectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    new ServicesConnectOptions(
                        validateData: true,
                        expectDeferred: true
                        ),
                    autoAccept: false
                    );

                var results = ExecutePublishDiscoverConnectScenario(connectParams);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        results.ConnectResults[0].SeekerSessionHandle,
                        results.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );
            }
        }
Esempio n. 3
0
        public void PinKeypadPairBothPreferGO()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Connect
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverConnectParameters connectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    new ServicesConnectOptions(
                        callGetProvisioningInfo: true,
                        preferGO: true,
                        preferredConfigMethod: WiFiDirectServiceConfigurationMethod.PinEntry,
                        validateData: true,
                        expectDeferred: true
                        ),
                    preferGO: true
                    );

                var results = ExecutePublishDiscoverConnectScenario(connectParams);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        results.ConnectResults[0].SeekerSessionHandle,
                        results.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );
            }
        }
Esempio n. 4
0
        public void DeferredPairSessionInfo()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Connect
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverConnectParameters connectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    new ServicesConnectOptions(
                        callGetProvisioningInfo: true,
                        preferredConfigMethod: WiFiDirectServiceConfigurationMethod.Default, // seeker
                        validateData: true,
                        expectDeferred: true,
                        sessionInfo: "a"
                        ),
                    configMethods: ServicePublishConfigMethods.Any, // advertiser
                    autoAccept: false
                    );

                var results = ExecutePublishDiscoverConnectScenario(connectParams);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        results.ConnectResults[0].SeekerSessionHandle,
                        results.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );
            }
        }
        public void DeferredConnectionCapabilityAdvertiserAutoGO()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Start autonomous GO
                remoteWFDController.StartAutonomousGo();

                // Connect
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverConnectParameters connectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    new ServicesConnectOptions(
                        callGetProvisioningInfo: true,
                        expectDeferred: true,
                        validateData: true
                        ),
                    autoAccept: false
                    );

                var pairResults = ExecutePublishDiscoverConnectScenario(connectParams);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        pairResults.ConnectResults[0].SeekerSessionHandle,
                        pairResults.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );

                CleanupBeforeReconnect(false);

                // Reconnect
                ServicesDiscoverConnectParameters reconnectParams = new ServicesDiscoverConnectParameters(
                    pairResults.PublishResults[0].AdvertiserHandle,
                    serviceName,
                    ServicesDiscoveryType.Watcher,
                    new ServicesConnectOptions(
                        callGetProvisioningInfo: true,
                        expectDeferred: true,
                        validateData: true,
                        expectGroupFormationNeeded: false
                        )
                    );

                var reconnectResults = ExecuteDiscoverConnectScenario(reconnectParams);

                Verify.AreEqual(1, reconnectResults.ConnectResults.Count);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        reconnectResults.ConnectResults[0].SeekerSessionHandle,
                        reconnectResults.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );

                remoteWFDController.StopAutonomousGo();
            }
        }
        public void AutoAcceptSeekerGOReconnect()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Connect
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverConnectParameters connectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    new ServicesConnectOptions(
                        callGetProvisioningInfo: true,
                        preferGO: true,
                        validateData: true
                        ),
                    preferGO: false
                    );

                var pairResults = ExecutePublishDiscoverConnectScenario(connectParams);

                // Verify results before we start using them
                Verify.AreEqual(1, pairResults.PublishResults.Count);
                Verify.AreEqual(1, pairResults.ConnectResults.Count);

                // Disconnect (from advertiser side)
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        pairResults.ConnectResults[0].AdvertiserSessionHandle,
                        pairResults.ConnectResults[0].SeekerSessionHandle
                        ),
                    false
                    );

                CleanupBeforeReconnect(true);

                // Reconnect
                ServicesDiscoverConnectParameters reconnectParams = new ServicesDiscoverConnectParameters(
                    pairResults.PublishResults[0].AdvertiserHandle,
                    serviceName,
                    ServicesDiscoveryType.Watcher,
                    new ServicesConnectOptions(
                        preferGO: true,
                        validateData: true,
                        expectGroupFormationNeeded: false
                        )
                    );

                var reconnectResults = ExecuteDiscoverConnectScenario(reconnectParams);

                Verify.AreEqual(1, reconnectResults.ConnectResults.Count);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        reconnectResults.ConnectResults[0].SeekerSessionHandle,
                        reconnectResults.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );
            }
        }
        public void ForgottenGroupAutoAcceptSeeker()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Connect
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverConnectParameters connectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    new ServicesConnectOptions(
                        callGetProvisioningInfo: true,
                        validateData: true
                        )
                    );

                var pairResults = ExecutePublishDiscoverConnectScenario(connectParams);

                // Verify results before we start using them
                Verify.AreEqual(1, pairResults.PublishResults.Count);
                Verify.AreEqual(1, pairResults.ConnectResults.Count);

                // Disconnect (from advertiser side)
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        pairResults.ConnectResults[0].AdvertiserSessionHandle,
                        pairResults.ConnectResults[0].SeekerSessionHandle
                        ),
                    false
                    );

                CleanupBeforeReconnect(true);
                // Forget pairing on seeker side
                localWFDController.TryRemoveDafAssociation(remoteWFDController.DeviceAddress);
                localWFDController.FlushVisibleDeviceList();

                // Reconnect, which should do pairing
                ServicesDiscoverConnectParameters reconnectParams = new ServicesDiscoverConnectParameters(
                    pairResults.PublishResults[0].AdvertiserHandle,
                    serviceName,
                    ServicesDiscoveryType.Watcher,
                    new ServicesConnectOptions(
                        callGetProvisioningInfo: true,
                        validateData: true
                        )
                    );

                var reconnectResults = ExecuteDiscoverConnectScenario(reconnectParams);

                Verify.AreEqual(1, reconnectResults.ConnectResults.Count);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        reconnectResults.ConnectResults[0].SeekerSessionHandle,
                        reconnectResults.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );
            }
        }
 public ServicesPublishDiscoverConnectScenario(
     WiFiDirectTestController seekerTestController,
     WiFiDirectTestController advertiserTestController,
     ServicesPublishDiscoverConnectParameters publishDiscoveryConnectParameters
     )
 {
     this.seekerTestController              = seekerTestController;
     this.advertiserTestController          = advertiserTestController;
     this.publishDiscoveryConnectParameters = publishDiscoveryConnectParameters;
 }
Esempio n. 9
0
        public void AutoAcceptPairDeferredReconnect()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Connect
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverConnectParameters connectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    new ServicesConnectOptions(
                        validateData: true
                        )
                    );

                var pairResults = ExecutePublishDiscoverConnectScenario(connectParams);

                // Verify results before we start using them
                Verify.AreEqual(1, pairResults.PublishResults.Count);
                Verify.AreEqual(1, pairResults.ConnectResults.Count);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        pairResults.ConnectResults[0].SeekerSessionHandle,
                        pairResults.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );

                CleanupBeforeReconnect(true);

                // Reconnect with auto-accept false (deferred)
                string serviceName2 = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverConnectParameters reconnectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName2,
                    new ServicesConnectOptions(
                        validateData: true,
                        expectDeferred: true
                        ),
                    autoAccept: false
                    );

                var reconnectResults = ExecutePublishDiscoverConnectScenario(reconnectParams);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        reconnectResults.ConnectResults[0].SeekerSessionHandle,
                        reconnectResults.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );
            }
        }
        public void ConnectASPOverExistingP2PGroup()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Start by doing WFD pairing
                // NOTE: use invitation (not used for services) and config method push button (not used for services)
                ExecutePairingScenario(PairingScenarioType.Invitation, DOT11_WPS_CONFIG_METHOD.DOT11_WPS_CONFIG_METHOD_PUSHBUTTON);

                // Make sure we close this session on cleanup
                needToCloseSession = true;

                // Connect, auto accept
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverConnectParameters connectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    new ServicesConnectOptions(validateData: true)
                    );

                var pairResults = ExecutePublishDiscoverConnectScenario(connectParams);

                Verify.AreEqual(1, pairResults.ConnectResults.Count);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        pairResults.ConnectResults[0].AdvertiserSessionHandle,
                        pairResults.ConnectResults[0].SeekerSessionHandle
                        ),
                    false
                    );

                // WFD connection should stay up
                WiFiDirectTestLogger.Log("Closed ASP Session, waiting to make sure WFD session stays active...");
                Task.Delay(8000).Wait();

                WfdGlobalSessionState globalSessionStateLocal = localWFDController.QueryGlobalSessionState();

                if (globalSessionStateLocal.Sessions.Length != 1)
                {
                    WiFiDirectTestLogger.Error("Expected a single active session.  Current session count = {0}", globalSessionStateLocal.Sessions.Length);
                    throw new Exception("Local machine session is closed");
                }

                WiFiDirectTestUtilities.RunDataPathValidation(localWFDController, remoteWFDController, "6001");

                // Close WFD connection
                localWFDController.CloseSession();
                needToCloseSession = false;
            }
        }
Esempio n. 11
0
        public void SimpleAutoAcceptPairingReconnect()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Connect
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesConnectOptions connectOptions = new ServicesConnectOptions(validateData: true);
                ServicesPublishDiscoverConnectParameters connectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    connectOptions
                    );

                var pairResults = ExecutePublishDiscoverConnectScenario(connectParams);

                // Verify results before we start using them
                Verify.AreEqual(1, pairResults.PublishResults.Count);
                Verify.AreEqual(1, pairResults.ConnectResults.Count);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        pairResults.ConnectResults[0].SeekerSessionHandle,
                        pairResults.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );

                CleanupBeforeReconnect(true);

                // Reconnect
                ServicesDiscoverConnectParameters reconnectParams = new ServicesDiscoverConnectParameters(
                    pairResults.PublishResults[0].AdvertiserHandle,
                    serviceName,
                    ServicesDiscoveryType.Watcher,
                    connectOptions
                    );

                var reconnectResults = ExecuteDiscoverConnectScenario(reconnectParams);

                Verify.AreEqual(1, reconnectResults.ConnectResults.Count);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        reconnectResults.ConnectResults[0].SeekerSessionHandle,
                        reconnectResults.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );
            }
        }
Esempio n. 12
0
        public void DeferredPairMultipleSessionSessionInfo()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                string serviceName1 = remoteWFDController.GenerateUniqueServiceName();
                string serviceName2 = remoteWFDController.GenerateUniqueServiceName();

                // First publish/discover/connect
                ServicesPublishDiscoverConnectParameters pdc1Params = new ServicesPublishDiscoverConnectParameters(
                    serviceName1,
                    new ServicesConnectOptions(validateData: true)
                    );
                var pdc1Results = ExecutePublishDiscoverConnectScenario(pdc1Params);

                // Now test ASPCP messages for session info
                ServicesPublishDiscoverConnectParameters pdc2Params = new ServicesPublishDiscoverConnectParameters(
                    serviceName2,
                    new ServicesConnectOptions(
                        callGetProvisioningInfo: false,
                        preferredConfigMethod: WiFiDirectServiceConfigurationMethod.Default, // seeker
                        validateData: true,
                        expectDeferred: true,
                        expectGroupFormationNeeded: false,
                        sessionInfo: "abcd123"
                        ),
                    configMethods: ServicePublishConfigMethods.Any, // advertiser
                    autoAccept: false,
                    deferredSessionInfo: "zyxw987"
                    );
                var pdc2Results = ExecutePublishDiscoverConnectScenario(pdc2Params);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        pdc1Results.ConnectResults[0].SeekerSessionHandle,
                        pdc1Results.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        pdc2Results.ConnectResults[0].AdvertiserSessionHandle,
                        pdc2Results.ConnectResults[0].SeekerSessionHandle
                        ),
                    false
                    );
            }
        }
        public void DeclinePairingConnectionIsRejected()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Connect
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverConnectParameters connectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    new ServicesConnectOptions(
                        callGetProvisioningInfo: true,
                        expectConnectSuccess: false,
                        declineConnect: true
                        ),
                    false
                    );

                var results = ExecutePublishDiscoverConnectScenario(connectParams);
            }
        }
Esempio n. 14
0
        public void DeferredPairNoCommonConfigMethodFail()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Connect
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverConnectParameters connectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    new ServicesConnectOptions(
                        callGetProvisioningInfo: true,
                        preferredConfigMethod: WiFiDirectServiceConfigurationMethod.PinDisplay, // seeker
                        validateData: true,
                        expectGetProvisioningSuccess: false
                        ),
                    configMethods: ServicePublishConfigMethods.PinOnlyDisplay, // advertiser
                    autoAccept: false
                    );

                var results = ExecutePublishDiscoverConnectScenario(connectParams);
            }
        }
Esempio n. 15
0
        public void SimpleAutoAcceptPairingAdvertiserDisconnect()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Connect
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverConnectParameters connectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    new ServicesConnectOptions(validateData: true)
                    );

                var results = ExecutePublishDiscoverConnectScenario(connectParams);

                // Disconnect (from advertiser side)
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        results.ConnectResults[0].AdvertiserSessionHandle,
                        results.ConnectResults[0].SeekerSessionHandle
                        ),
                    false
                    );
            }
        }
Esempio n. 16
0
        public void DeferredPairSessionInfoMaxSize()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                StringBuilder builder = new StringBuilder();
                for (int i = 0; i < 144; i++)
                {
                    builder.Append(s_chars[rng.Next(s_chars.Length)]);
                }
                string sessionInfo = builder.ToString();

                // Connect
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverConnectParameters connectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    new ServicesConnectOptions(
                        callGetProvisioningInfo: true,
                        preferredConfigMethod: WiFiDirectServiceConfigurationMethod.Default, // seeker
                        validateData: true,
                        expectDeferred: true,
                        sessionInfo: sessionInfo
                        ),
                    configMethods: ServicePublishConfigMethods.Any, // advertiser
                    autoAccept: false
                    );

                var results = ExecutePublishDiscoverConnectScenario(connectParams);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        results.ConnectResults[0].SeekerSessionHandle,
                        results.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );
            }
        }
        public void ForgottenGroupDeferredAdvertiser()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Connect
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverConnectParameters connectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    new ServicesConnectOptions(
                        callGetProvisioningInfo: true,
                        preferredConfigMethod: WiFiDirectServiceConfigurationMethod.PinEntry,
                        validateData: true,
                        expectDeferred: true
                        ),
                    autoAccept: false
                    );

                var pairResults = ExecutePublishDiscoverConnectScenario(connectParams);

                // Verify results before we start using them
                Verify.AreEqual(1, pairResults.PublishResults.Count);
                Verify.AreEqual(1, pairResults.ConnectResults.Count);

                // Disconnect (from advertiser side)
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        pairResults.ConnectResults[0].AdvertiserSessionHandle,
                        pairResults.ConnectResults[0].SeekerSessionHandle
                        ),
                    false
                    );

                CleanupBeforeReconnect(true);
                // Forget pairing on advertiser side
                remoteWFDController.TryRemoveDafAssociation(localWFDController.DeviceAddress);
                remoteWFDController.FlushVisibleDeviceList();

                // BUG: [TH2] Fix race where UE cancels back-to-back discoveries because set additional IEs OID preempts the scan
                Task.Delay(500).Wait();

                // Reconnect, which should do pairing
                ServicesDiscoverConnectParameters reconnectParams = new ServicesDiscoverConnectParameters(
                    pairResults.PublishResults[0].AdvertiserHandle,
                    serviceName,
                    ServicesDiscoveryType.Watcher,
                    new ServicesConnectOptions(
                        callGetProvisioningInfo: true,
                        expectGroupFormationNeeded: true,
                        preferredConfigMethod: WiFiDirectServiceConfigurationMethod.PinEntry,
                        validateData: true,
                        expectDeferred: true
                        )
                    );

                var reconnectResults = ExecuteDiscoverConnectScenario(reconnectParams);

                Verify.AreEqual(1, reconnectResults.ConnectResults.Count);

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        reconnectResults.ConnectResults[0].SeekerSessionHandle,
                        reconnectResults.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );
            }
        }
Esempio n. 18
0
        public void SimpleAutoAcceptMultipleSockets()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Connect
                string serviceName = remoteWFDController.GenerateUniqueServiceName();
                ServicesPublishDiscoverConnectParameters connectParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName,
                    new ServicesConnectOptions()
                    );

                var results = ExecutePublishDiscoverConnectScenario(connectParams);

                var tcp1Results = ExecuteOpenSocketSendDataScenario(
                    new ServicesOpenSocketSendDataParameters(
                        results.ConnectResults[0].AdvertiserSessionHandle,
                        results.ConnectResults[0].SeekerSessionHandle,
                        WiFiDirectServiceIPProtocol.Tcp,
                        6000,
                        131072 // 128k
                        ),
                    false
                    );

                var tcp2Results = ExecuteOpenSocketSendDataScenario(
                    new ServicesOpenSocketSendDataParameters(
                        results.ConnectResults[0].SeekerSessionHandle,
                        results.ConnectResults[0].AdvertiserSessionHandle,
                        WiFiDirectServiceIPProtocol.Tcp,
                        6007,
                        131072 // 128k
                        )
                    );

                var udp1Results = ExecuteOpenSocketSendDataScenario(
                    new ServicesOpenSocketSendDataParameters(
                        results.ConnectResults[0].AdvertiserSessionHandle,
                        results.ConnectResults[0].SeekerSessionHandle,
                        WiFiDirectServiceIPProtocol.Udp,
                        7000,
                        8000
                        ),
                    false
                    );

                var udp2Results = ExecuteOpenSocketSendDataScenario(
                    new ServicesOpenSocketSendDataParameters(
                        results.ConnectResults[0].SeekerSessionHandle,
                        results.ConnectResults[0].AdvertiserSessionHandle,
                        WiFiDirectServiceIPProtocol.Udp,
                        7007,
                        8000
                        )
                    );

                // Disconnect
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        results.ConnectResults[0].SeekerSessionHandle,
                        results.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );
            }
        }
Esempio n. 19
0
        ServicesPublishDiscoverConnectScenarioResult ExecutePublishDiscoverConnectScenario(ServicesPublishDiscoverConnectParameters publishDiscoverConnectParams)
        {
            ServicesPublishDiscoverConnectScenario scenario = new ServicesPublishDiscoverConnectScenario(
                localWFDController,
                remoteWFDController,
                publishDiscoverConnectParams
                );
            ServicesPublishDiscoverConnectScenarioResult scenarioResult = scenario.Execute();

            Verify.IsTrue(scenarioResult.ScenarioSucceeded);

            return(scenarioResult);
        }
Esempio n. 20
0
        public void SimpleAutoAcceptMultipleSimultaneousSessions()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                string serviceName1 = remoteWFDController.GenerateUniqueServiceName();
                string serviceName2 = remoteWFDController.GenerateUniqueServiceName();
                string serviceName3 = remoteWFDController.GenerateUniqueServiceName();

                ServicesConnectOptions connectOptions = new ServicesConnectOptions(validateData: true);

                // NOTE: this will do FindAllAsync while all other tests use the watcher/incremental updates
                // Publish 2 services, discover/connect to first
                ServicesPublishDiscoverConnectParameters pdcParams = new ServicesPublishDiscoverConnectParameters(
                    serviceName1,
                    connectOptions
                    );
                var pdcResults = ExecutePublishDiscoverConnectScenario(pdcParams);

                Verify.AreEqual(1, pdcResults.PublishResults.Count);
                Verify.AreEqual(1, pdcResults.ConnectResults.Count);

                // Discover/connect to second
                ServicesPublishDiscoverConnectParameters pdc2Params = new ServicesPublishDiscoverConnectParameters(
                    serviceName2,
                    connectOptions,
                    discoveryType: ServicesDiscoveryType.Watcher
                    );
                var pdc2Results = ExecutePublishDiscoverConnectScenario(pdc2Params);

                Verify.AreEqual(1, pdc2Results.PublishResults.Count);
                Verify.AreEqual(1, pdc2Results.ConnectResults.Count);

                // Publish/discover/connect third service
                ServicesPublishDiscoverConnectParameters pdc3Params = new ServicesPublishDiscoverConnectParameters(
                    serviceName3,
                    connectOptions
                    );
                var pdc3Results = ExecutePublishDiscoverConnectScenario(pdc3Params);

                Verify.AreEqual(1, pdc3Results.PublishResults.Count);
                Verify.AreEqual(1, pdc3Results.ConnectResults.Count);

                // Disconnect second service
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        pdc2Results.ConnectResults[0].SeekerSessionHandle,
                        pdc2Results.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );

                // Try to send some more data on 1st session, expect still connected
                ServicesSendDataParameters sendDataParams = new ServicesSendDataParameters(
                    pdcResults.ConnectResults[0].SeekerSessionHandle,
                    pdcResults.ConnectResults[0].SeekerSocketHandle,
                    pdcResults.ConnectResults[0].AdvertiserSessionHandle,
                    pdcResults.ConnectResults[0].AdvertiserSocketHandle,
                    65536
                    );
                var sendDataResult = ExecuteSendDataScenario(sendDataParams);

                // Disconnect first/third service
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        pdcResults.ConnectResults[0].AdvertiserSessionHandle,
                        pdcResults.ConnectResults[0].SeekerSessionHandle
                        ),
                    false
                    );
                ExecuteDisconnectScenario(
                    new ServicesDisconnectParameters(
                        pdc3Results.ConnectResults[0].SeekerSessionHandle,
                        pdc3Results.ConnectResults[0].AdvertiserSessionHandle
                        )
                    );
            }
        }