Пример #1
26
        public OnboardingAccessPoint(string ssid, string password)
        {
            // Begin advertising for legacy clients
            _publisher = new WiFiDirectAdvertisementPublisher();

            // Note: If this flag is not set, the legacy parameters are ignored
            _publisher.Advertisement.IsAutonomousGroupOwnerEnabled = true;

            // Setup Advertisement to use a custom SSID and WPA2 passphrase
            _publisher.Advertisement.LegacySettings.IsEnabled = true;
            _publisher.Advertisement.LegacySettings.Ssid = ssid;
            _publisher.Advertisement.LegacySettings.Passphrase = new PasswordCredential { Password = password };
        }
        private void btnStartAdvertisement_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (_publisher == null)
                {
                    _publisher = new WiFiDirectAdvertisementPublisher();
                }

                if (chkListener.IsChecked == true)
                {
                    if (_listener == null)
                    {
                        _listener = new WiFiDirectConnectionListener();
                    }

                    _listener.ConnectionRequested += OnConnectionRequested;
                }

                _publisher.Advertisement.IsAutonomousGroupOwnerEnabled = (chkPreferGroupOwnerMode.IsChecked == true);

                if (cmbListenState.SelectionBoxItem.ToString().Equals("Normal") == true)
                {
                    _publisher.Advertisement.ListenStateDiscoverability = WiFiDirectAdvertisementListenStateDiscoverability.Normal;
                }
                else if (cmbListenState.SelectionBoxItem.ToString().Equals("Intensive") == true)
                {
                    _publisher.Advertisement.ListenStateDiscoverability = WiFiDirectAdvertisementListenStateDiscoverability.Intensive;
                }
                else if (cmbListenState.SelectionBoxItem.ToString().Equals("None") == true)
                {
                    _publisher.Advertisement.ListenStateDiscoverability = WiFiDirectAdvertisementListenStateDiscoverability.None;
                }

                _publisher.StatusChanged += OnStatusChanged;

                _publisher.Start();

                rootPage.NotifyUser("Advertisement started, waiting for StatusChanged callback...", NotifyType.StatusMessage);
            }
            catch (Exception ex)
            {
                rootPage.NotifyUser("Error starting Advertisement: " + ex.ToString(), NotifyType.ErrorMessage);
            }
        }
        private async void OnStatusChanged(WiFiDirectAdvertisementPublisher sender, WiFiDirectAdvertisementPublisherStatusChangedEventArgs statusEventArgs)
        {
            if (statusEventArgs.Status == WiFiDirectAdvertisementPublisherStatus.Started)
            {
                await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    if (sender.Advertisement.LegacySettings.IsEnabled)
                    {
                        // Show the autogenerated passphrase and SSID.
                        if (String.IsNullOrEmpty(txtPassphrase.Text))
                        {
                            txtPassphrase.Text = _publisher.Advertisement.LegacySettings.Passphrase.Password;
                        }

                        if (String.IsNullOrEmpty(txtSsid.Text))
                        {
                            txtSsid.Text = _publisher.Advertisement.LegacySettings.Ssid;
                        }
                    }
                });
            }

            rootPage.NotifyUserFromBackground($"Advertisement: Status: {statusEventArgs.Status}, Error: {statusEventArgs.Error}", NotifyType.StatusMessage);
            return;
        }
Пример #4
0
        private void btnStartAdvertisement_Click(object sender, RoutedEventArgs e)
        {
            _publisher = new WiFiDirectAdvertisementPublisher();
            _publisher.StatusChanged += OnStatusChanged;

            _listener = new WiFiDirectConnectionListener();

            try
            {
                // This can raise an exception if the machine does not support WiFi. Sorry.
                _listener.ConnectionRequested += OnConnectionRequested;
            }
            catch (Exception ex)
            {
                //rootPage.NotifyUser($"Error preparing Advertisement: {ex}", NotifyType.ErrorMessage);
                return;
            }

            _publisher.Advertisement.ListenStateDiscoverability = WiFiDirectAdvertisementListenStateDiscoverability.Normal;

            _publisher.Advertisement.IsAutonomousGroupOwnerEnabled = false;

            //// Legacy settings are meaningful only if IsAutonomousGroupOwnerEnabled is true.
            //if (_publisher.Advertisement.IsAutonomousGroupOwnerEnabled && chkLegacySetting.IsChecked.Value)
            //{
            //    _publisher.Advertisement.LegacySettings.IsEnabled = true;
            //    if (!string.IsNullOrEmpty(txtPassphrase.Text))
            //    {
            //        Windows.Security.Credentials.PasswordCredential creds = new Windows.Security.Credentials.PasswordCredential
            //        {
            //            Password = txtPassphrase.Text
            //        };
            //        _publisher.Advertisement.LegacySettings.Passphrase = creds;
            //    }

            //    if (!string.IsNullOrEmpty(txtSsid.Text))
            //    {
            //        _publisher.Advertisement.LegacySettings.Ssid = txtSsid.Text;
            //    }
            //}

            // Add the information elements.
            foreach (WiFiDirectInformationElement informationElement in _informationElements)
            {
                _publisher.Advertisement.InformationElements.Add(informationElement);
            }

            _publisher.Start();

            if (_publisher.Status == WiFiDirectAdvertisementPublisherStatus.Started)
            {
                //btnStartAdvertisement.IsEnabled = false;
                btnStopAdvertisement.IsEnabled = true;
                //rootPage.NotifyUser("Advertisement started.", NotifyType.StatusMessage);
            }
            else
            {
                // rootPage.NotifyUser($"Advertisement failed to start. Status is {_publisher.Status}", NotifyType.ErrorMessage);
            }
        }
Пример #5
0
        // Initialize advertizing and if Receiver handle connetion request
        public void Init(bool IsReceiver)
        {
            // Create an instance of Wifi Direct advertiser
            if (publisher == null)
            {
                publisher = new WiFiDirectAdvertisementPublisher();
            }

            // Listen to connection request if receiver
            if (IsReceiver)
            {
                WiFiDirectConnectionListener listener = new WiFiDirectConnectionListener();
                listener.ConnectionRequested += (WiFiDirectConnectionListener sender, WiFiDirectConnectionRequestedEventArgs connectionEventArgs) =>
                {
                    // Because HandleConnectionRequestAsync generates a connection dialog window It request UI Thread
                    WiFiDirectConnectionRequest connectionRequest = connectionEventArgs.GetConnectionRequest();
                    Xamarin.Forms.Device.BeginInvokeOnMainThread(async() =>
                    {
                        // Request a connection to given device
                        var id = connectionRequest.DeviceInformation.Id;
                        //connectionRequest.Dispose();
                        await WifiDirectHandler.ConnectAsync(id, IsReceiver);
                    });
                };
            }
            // Start advertisement with Intensive parameter so that WifiDirect stay enabled even if app is in background
            publisher.Advertisement.ListenStateDiscoverability = WiFiDirectAdvertisementListenStateDiscoverability.Intensive;
            publisher.Start();
        }
Пример #6
0
 private static void DisposeWiFiPublisher()
 {
     wifiPublisher.Stop();
     wifiPublisher.StatusChanged -= WifiPublisher_StatusChanged;
     wifiPublisher = null;
     wifiConnectionListener.ConnectionRequested -= WifiConnectionListener_ConnectionRequested;
     wifiConnectionListener = null;
 }
Пример #7
0
 /// <summary>
 /// Wi-Fi直连广播者开始广播
 /// </summary>
 public void StartAdvertising()
 {
     publisher = new WiFiDirectAdvertisementPublisher();
     listener  = new WiFiDirectConnectionListener();
     publisher.StatusChanged += OnPublisherStatusChanged;
     publisher.Advertisement.ListenStateDiscoverability = WiFiDirectAdvertisementListenStateDiscoverability.Intensive;
     listener.ConnectionRequested += OnConnectionRequested;
     publisher.Start();
     //TextBlock_ConnectedState.Text = "开始广播……";
 }
Пример #8
0
 private async void OnPublisherStatusChanged(WiFiDirectAdvertisementPublisher sender, WiFiDirectAdvertisementPublisherStatusChangedEventArgs args)
 {
     if (args.Status == WiFiDirectAdvertisementPublisherStatus.Aborted)
     {
         Debug.WriteLine("因错误终止广播");
         publisher.Start();
     }
     else if (args.Status == WiFiDirectAdvertisementPublisherStatus.Started)
     {
         await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { TextBlock_ConnectedState.Text = "开始广播……"; });
     }
 }
 public void StartServer()
 {
     publisher = new WiFiDirectAdvertisementPublisher();
     listener = new WiFiDirectConnectionListener();
     publisher.Advertisement.ListenStateDiscoverability = WiFiDirectAdvertisementListenStateDiscoverability.Normal;
     listener.ConnectionRequested += OnConnectionRequested;
     _ConnectionEstablishState = ConnectionEstablishState.Connecting;
     OnConnectionEstalblishResult(this, _ConnectionEstablishState);
     publisher.Start();
     StartUDP(50001);
     //TextBlock_ConnectedState.Text = "开始广播……";
 }
Пример #10
0
        private static void StartWiFiHotspot()
        {
            wifiPublisher          = new WiFiDirectAdvertisementPublisher();
            wifiConnectionListener = new WiFiDirectConnectionListener();

            wifiConnectionListener.ConnectionRequested += WifiConnectionListener_ConnectionRequested;

            wifiPublisher.Advertisement.IsAutonomousGroupOwnerEnabled      = true;
            wifiPublisher.Advertisement.LegacySettings.Ssid                = SSID;
            wifiPublisher.Advertisement.LegacySettings.IsEnabled           = true;
            wifiPublisher.Advertisement.LegacySettings.Passphrase.Password = PASSWORD;
            wifiPublisher.StatusChanged += WifiPublisher_StatusChanged;
            wifiPublisher.Start();
        }
        public OnboardingAccessPoint(string ssid, string password)
        {
            // Begin advertising for legacy clients
            _publisher = new WiFiDirectAdvertisementPublisher();

            // Note: If this flag is not set, the legacy parameters are ignored
            _publisher.Advertisement.IsAutonomousGroupOwnerEnabled = true;

            // Setup Advertisement to use a custom SSID and WPA2 passphrase
            _publisher.Advertisement.LegacySettings.IsEnabled  = true;
            _publisher.Advertisement.LegacySettings.Ssid       = ssid;
            _publisher.Advertisement.LegacySettings.Passphrase = new PasswordCredential {
                Password = password
            };
        }
Пример #12
0
        public void Init()
        {
            // Create an Advertisement Publisher
            WiFiDirectAdvertisementPublisher publisher = new WiFiDirectAdvertisementPublisher();

            // Turn on Listen state
            publisher.Advertisement.ListenStateDiscoverability = WiFiDirectAdvertisementListenStateDiscoverability.Normal;

            // Register for connection requests
            WiFiDirectConnectionListener listener = new WiFiDirectConnectionListener();

            listener.ConnectionRequested += OnConnectionRequested;

            // Start the advertiser
            publisher.Start();
        }
        void advertise()
        {
            if (mAdvertiser == null)
            {
                mAdvertiser = new WiFiDirectAdvertisementPublisher();
            }

            if (mConnectionListener == null)
            {
                mConnectionListener = new WiFiDirectConnectionListener();
            }
            mConnectionListener.ConnectionRequested += OnConnectionRequested;
            mAdvertiser.Advertisement.ListenStateDiscoverability = WiFiDirectAdvertisementListenStateDiscoverability.Normal;
            mAdvertiser.StatusChanged += OnStatusChanged;
            mAdvertiser.Start();
        }
Пример #14
0
        private void StartPublisher(WlanSetting setting)
        {
            _publisher = new WiFiDirectAdvertisementPublisher();
            _publisher.Advertisement.ListenStateDiscoverability    = WiFiDirectAdvertisementListenStateDiscoverability.Normal;
            _publisher.Advertisement.IsAutonomousGroupOwnerEnabled = true;
            _publisher.StatusChanged += OnStatusChanged;
            _publisher.Advertisement.LegacySettings.IsEnabled = true;

            var creds = new Windows.Security.Credentials.PasswordCredential();

            _publisher.Advertisement.LegacySettings.Ssid = setting.Name;
            creds.Password = setting.Password;
            _publisher.Advertisement.LegacySettings.Passphrase = creds;

            _publisher.Start();
        }
        private void btnStartAdvertisement_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (_publisher == null)
                {
                    _publisher = new WiFiDirectAdvertisementPublisher();
                }

                if (chkListener.IsChecked == true)
                {
                    if (_listener == null)
                    {
                        _listener = new WiFiDirectConnectionListener();
                    }

                    _listener.ConnectionRequested += OnConnectionRequested;
                }

                _publisher.Advertisement.IsAutonomousGroupOwnerEnabled = (chkPreferGroupOwnerMode.IsChecked == true);

                if (cmbListenState.SelectionBoxItem.ToString().Equals("Normal") == true)
                {
                    _publisher.Advertisement.ListenStateDiscoverability = WiFiDirectAdvertisementListenStateDiscoverability.Normal;
                }
                else if (cmbListenState.SelectionBoxItem.ToString().Equals("Intensive") == true)
                {
                    _publisher.Advertisement.ListenStateDiscoverability = WiFiDirectAdvertisementListenStateDiscoverability.Intensive;
                }
                else if (cmbListenState.SelectionBoxItem.ToString().Equals("None") == true)
                {
                    _publisher.Advertisement.ListenStateDiscoverability = WiFiDirectAdvertisementListenStateDiscoverability.None;
                }

                _publisher.StatusChanged += OnStatusChanged;

                _publisher.Start();

                rootPage.NotifyUser("Advertisement started, waiting for StatusChanged callback...", NotifyType.StatusMessage);
            }
            catch (Exception ex)
            {
                rootPage.NotifyUser("Error starting Advertisement: " + ex.ToString(), NotifyType.ErrorMessage);
            }
        }
Пример #16
0
        public void Start()
        {
            // Clean up old state
            Reset();

            // Create WiFiDirectAdvertisementPublisher
            _publisher = new WiFiDirectAdvertisementPublisher();
            // Add event handler for advertisement StatusChanged
            _publisher.StatusChanged += OnStatusChanged;

            // Set Advertisement required settings
            _advertisement = _publisher.Advertisement;

            // Must set the autonomous group owner (GO) enabled flag
            // Legacy Wi-Fi Direct advertisement uses a Wi-Fi Direct GO to act as an access point to legacy settings
            _advertisement.IsAutonomousGroupOwnerEnabled = true;

            _legacySettings = _advertisement.LegacySettings;

            // Must enable legacy settings so that non-Wi-Fi Direct peers can connect in legacy mode
            _legacySettings.IsEnabled = true;

            // Either specify an SSID, or read the randomly generated one
            if (_ssidProvided)
            {
                _legacySettings.Ssid = _ssid;
            }
            else
            {
                _ssid = _legacySettings.Ssid;
            }

            // Either specify a passphrase, or read the randomly generated one
            if (_passPhraseProvided)
            {
                _legacySettings.Passphrase.Password = _passPhrase;
            }
            else
            {
                _passPhrase = _legacySettings.Passphrase.Password;
            }

            _publisher.Start();
        }
Пример #17
0
    public WiFiDirect()
    {
        // Begin advertising for legacy clients
        _publisher = new WiFiDirectAdvertisementPublisher();

        // Note: If this flag is not set, the legacy parameters are ignored
        _publisher.Advertisement.IsAutonomousGroupOwnerEnabled = true;

        // Setup Advertisement to use a custom SSID and WPA2 passphrase
        _publisher.Advertisement.LegacySettings.IsEnabled = true;

        _publisher.Advertisement.LegacySettings.Passphrase = new PasswordCredential();

        try {
            var nw = new NativeWiFi();
            SSID = nw.SSID;
            Key  = nw.Key;
        } catch {
        }
    }
Пример #18
0
 private void Reset()
 {
     if (_connectionListener != null)
     {
         _connectionListener.ConnectionRequested -= OnConnectionRequested;
     }
     if (_publisher != null)
     {
         _publisher.StatusChanged -= OnStatusChanged;
         if (_publisher.Status == WiFiDirectAdvertisementPublisherStatus.Created ||
             _publisher.Status == WiFiDirectAdvertisementPublisherStatus.Started)
         {
             _publisher.Stop();
         }
     }
     _connectionListener = null;
     _publisher          = null;
     _legacySettings     = null;
     _advertisement      = null;
     _connectedDevices.Clear();
 }
        private void btnAddIe_Click(object sender, RoutedEventArgs e)
        {
            if (_publisher == null)
            {
                _publisher = new WiFiDirectAdvertisementPublisher();
            }

            if (txtInformationElement.Text == "")
            {
                rootPage.NotifyUser("Please specifiy an IE", NotifyType.ErrorMessage);
                return;
            }

            WiFiDirectInformationElement IE = new WiFiDirectInformationElement();

            // IE blob
            DataWriter dataWriter = new DataWriter();

            dataWriter.UnicodeEncoding = UnicodeEncoding.Utf8;
            dataWriter.ByteOrder       = ByteOrder.LittleEndian;
            dataWriter.WriteUInt32(dataWriter.MeasureString(txtInformationElement.Text));
            dataWriter.WriteString(txtInformationElement.Text);
            IE.Value = dataWriter.DetachBuffer();

            // OUI
            DataWriter dataWriterOUI = new DataWriter();

            dataWriterOUI.WriteBytes(Globals.CustomOui);
            IE.Oui = dataWriterOUI.DetachBuffer();

            // OUI Type
            IE.OuiType = Globals.CustomOuiType;

            _publisher.Advertisement.InformationElements.Add(IE);
            txtInformationElement.Text = "";

            rootPage.NotifyUser("IE added successfully", NotifyType.StatusMessage);
        }
Пример #20
0
 private void OnAdvertisementStatusChanged(WiFiDirectAdvertisementPublisher sender, WiFiDirectAdvertisementPublisherStatusChangedEventArgs args)
 {
     if (args.Status == WiFiDirectAdvertisementPublisherStatus.Started)
     {
         _active = true;
     }
     else if (args.Status == WiFiDirectAdvertisementPublisherStatus.Stopped)
     {
         _active = false;
     }
     else if (args.Status == WiFiDirectAdvertisementPublisherStatus.Aborted)
     {
         _active = false;
         if (args.Error == WiFiDirectError.RadioNotAvailable)
         {
             // The radio was turned off.
         }
         else if (args.Error == WiFiDirectError.ResourceInUse)
         {
             // The stack couldn't accept any additional IEs.  Need to turn off any other applications which could be advertising
         }
     }
 }
Пример #21
0
 private void OnAdvertisementStatusChanged(WiFiDirectAdvertisementPublisher sender, WiFiDirectAdvertisementPublisherStatusChangedEventArgs args)
 {
     if (args.Status == WiFiDirectAdvertisementPublisherStatus.Started)
     {
         _active = true;
     }
     else if (args.Status == WiFiDirectAdvertisementPublisherStatus.Stopped)
     {
         _active = false;
     }
     else if (args.Status == WiFiDirectAdvertisementPublisherStatus.Aborted)
     {
         _active = false;
         if (args.Error == WiFiDirectError.RadioNotAvailable)
         {
             // The radio was turned off.
         }
         else if (args.Error == WiFiDirectError.ResourceInUse)
         {
             // The stack couldn't accept any additional IEs.  Need to turn off any other applications which could be advertising
         }
     }
 }
        public OnboardingAccessPoint(string ssid, string password, Guid deviceID)
        {
            // Assert password length meets requirements if password is specified.
            // If password is null or empty, treat this as Open network.
            bool WPA2 = !String.IsNullOrEmpty(password);

            if (WPA2)
            {
                Debug.Assert(password.Length <= MAX_WPA2_PASSWORD_LENGTH);
                Debug.Assert(password.Length >= MIN_WPA2_PASSWORD_LENGTH);
            }

            // Begin advertising for legacy clients
            _publisher = new WiFiDirectAdvertisementPublisher();

            // Note: If this flag is not set, the legacy parameters are ignored
            _publisher.Advertisement.IsAutonomousGroupOwnerEnabled = true;

            // Setup Advertisement to use a custom SSID and WPA2 passphrase (null or empty implies Open)
            _publisher.Advertisement.LegacySettings.IsEnabled  = true;
            _publisher.Advertisement.LegacySettings.Ssid       = ssid;
            _publisher.Advertisement.LegacySettings.Passphrase = WPA2 ? new PasswordCredential {
                Password = password
            } : null;

            if (WPA2)
            {
                // If using WPA2, configure this device's WiFi Access Point with the password needed to connect to it
                // and all other information needed by the Microsoft Onboaring Specification
                // After the device is onboarded to an end-user's network this will not be broadcast anymore.

                // The following code generates a Wifi Direct Information Element with the following format:
                //
                //
                //  1Byte   1Byte    3Bytes        1Byte      ... Several Bytes...
                // ---------------------------------------------------------------------------------------
                // | Type | Length |     OUI     | OUITYPE | Data [ETLV1],[ETLV2]...[ETLVn]              |
                // ---------------------------------------------------------------------------------------
                //   DD      num      84 63 d6       00      [01 0A 49 6f 54 20 44 65 76 69 63 65][02....]
                //          bytes                                  | I  o  T     D  e  v  i  c  e|
                //                                                 |   "Device Friendly Name"    |
                //
                // Where each "ETLV" is
                //
                //   1Byte       1Byte     ... Several Bytes...
                // ---------------------------------------------------------------------------------------
                // | ETLV Type | Length |   Data                                                         |
                // ---------------------------------------------------------------------------------------
                //


                // Customize this for your own device
                string DEVICE_FRIENDLY_NAME = "IoT Device: " + ssid;

                IEnumerable <byte> ouiData = MakeStringElement(ETLVType.FRIENDLY_NAME, DEVICE_FRIENDLY_NAME);
                ouiData = ouiData.Concat(MakeTLVElement(ETLVType.DEVICE_TYPE, DEVICE_TYPE));
                ouiData = ouiData.Concat(MakeStringElement(ETLVType.DEVICE_MANUFACTURER, DEVICE_MANUFACTURER_NAME));
                ouiData = ouiData.Concat(MakeStringElement(ETLVType.LANGUAGE_TAG, LANGUAGE_TAG));
                ouiData = ouiData.Concat(MakeGUIDElement(ETLVType.DEVICE_ID, deviceID));
                ouiData = ouiData.Concat(MakeStringElement(ETLVType.PASSWORD, password));
                ouiData = ouiData.Concat(MakeStringElement(ETLVType.UNCLASSIFIED_DEVICE_TYPE, UNCLASSIFIED_DEVICE_TYPE));

                // Create the IoT Device Wi-Fi Beacons Partner Information Element
                var infoElement = new WiFiDirectInformationElement
                {
                    OuiType = OUI_TYPE,
                    Oui     = ByteArrayToBuffer(MICROSOFT_OUI),
                    Value   = ByteArrayToBuffer(ouiData.ToArray())
                };

                // The Maximum OUI Data Length was exceeded.  Trim ouiData String lengths
                Debug.Assert(infoElement.Value.Length < MAX_OUI_DATA_LENGTH);

                // Add the custom Information Elements for publication
                var wifiInfoElements = new List <WiFiDirectInformationElement>
                {
                    infoElement
                };
                _publisher.Advertisement.InformationElements = wifiInfoElements;
            }
        }
Пример #23
0
        private void OnStatusChanged(WiFiDirectAdvertisementPublisher publisher, WiFiDirectAdvertisementPublisherStatusChangedEventArgs eventArgs)
        {
            try
            {
                switch (eventArgs.Status)
                {
                case WiFiDirectAdvertisementPublisherStatus.Started:
                {
                    // Begin listening for connections and notify listener that the advertisement started
                    StartListener();
                    if (_listener != null)
                    {
                        _listener.OnAdvertisementStarted();
                    }
                    break;
                }

                case WiFiDirectAdvertisementPublisherStatus.Stopped:
                {
                    // Notify listener that the advertisement is stopped
                    if (_listener != null)
                    {
                        _listener.OnAdvertisementStopped("Advertisement stopped");
                    }
                    break;
                }

                case WiFiDirectAdvertisementPublisherStatus.Aborted:
                {
                    // Check error and notify listener that the advertisement stopped
                    if (_listener != null)
                    {
                        string message;
                        switch (eventArgs.Error)
                        {
                        case WiFiDirectError.RadioNotAvailable:
                            message = "Advertisement aborted, Wi-Fi radio is turned off";
                            break;

                        case WiFiDirectError.ResourceInUse:
                            message = "Advertisement aborted, Resource In Use";
                            break;

                        default:
                            message = "Advertisement aborted, unknown reason";
                            break;
                        }
                        _listener.OnAdvertisementAborted(message);
                    }
                    break;
                }
                }
            }
            catch (Exception ex)
            {
                if (_listener != null)
                {
                    _listener.OnAsyncException(ex.ToString());
                }
                return;
            }
        }
 public WiFiDirectAdvertisementPublisherEvents(WiFiDirectAdvertisementPublisher This)
 {
     this.This = This;
 }
Пример #25
0
 private static void WifiPublisher_StatusChanged(WiFiDirectAdvertisementPublisher sender, WiFiDirectAdvertisementPublisherStatusChangedEventArgs args)
 {
     Debug.WriteLine("WiFi Hotspot status: " + args.Status.ToString());
 }
 void OnStatusChanged(WiFiDirectAdvertisementPublisher sender, WiFiDirectAdvertisementPublisherStatusChangedEventArgs statusEventArgs)
 {
     Debug.WriteLine("Advertisement: Status: " + statusEventArgs.Status.ToString() + " Error: " + statusEventArgs.Error.ToString());
 }
 private void OnStatusChanged(WiFiDirectAdvertisementPublisher sender, WiFiDirectAdvertisementPublisherStatusChangedEventArgs statusEventArgs)
 {
     rootPage.NotifyUserFromBackground("Advertisement: Status: " + statusEventArgs.Status.ToString() + " Error: " + statusEventArgs.Error.ToString(), NotifyType.StatusMessage);
     return;
 }
 private void OnStatusChanged(WiFiDirectAdvertisementPublisher sender, WiFiDirectAdvertisementPublisherStatusChangedEventArgs statusEventArgs)
 {
     rootPage.NotifyUserFromBackground("Advertisement: Status: " + statusEventArgs.Status.ToString() + " Error: " + statusEventArgs.Error.ToString(), NotifyType.StatusMessage);
     return;
 }
        private void btnAddIe_Click(object sender, RoutedEventArgs e)
        {
            if (_publisher == null)
            {
                _publisher = new WiFiDirectAdvertisementPublisher();
            }

            if (txtInformationElement.Text == "")
            {
                rootPage.NotifyUser("Please specifiy an IE", NotifyType.ErrorMessage);
                return;
            }

            WiFiDirectInformationElement IE = new WiFiDirectInformationElement();

            // IE blob
            DataWriter dataWriter = new DataWriter();
            dataWriter.UnicodeEncoding = UnicodeEncoding.Utf8;
            dataWriter.ByteOrder = ByteOrder.LittleEndian;
            dataWriter.WriteUInt32(dataWriter.MeasureString(txtInformationElement.Text));
            dataWriter.WriteString(txtInformationElement.Text);
            IE.Value = dataWriter.DetachBuffer();

            // OUI
            DataWriter dataWriterOUI = new DataWriter();
            dataWriterOUI.WriteBytes(Globals.CustomOui);
            IE.Oui = dataWriterOUI.DetachBuffer();

            // OUI Type
            IE.OuiType = Globals.CustomOuiType;

            _publisher.Advertisement.InformationElements.Add(IE);
            txtInformationElement.Text = "";

            rootPage.NotifyUser("IE added successfully", NotifyType.StatusMessage);
        }
        private async void OnStatusChanged(WiFiDirectAdvertisementPublisher sender, WiFiDirectAdvertisementPublisherStatusChangedEventArgs statusEventArgs)
        {
            if (statusEventArgs.Status == WiFiDirectAdvertisementPublisherStatus.Started)
            {
                await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    if (sender.Advertisement.LegacySettings.IsEnabled)
                    {
                        // Show the autogenerated passphrase and SSID.
                        if (String.IsNullOrEmpty(txtPassphrase.Text))
                        {
                            txtPassphrase.Text = _publisher.Advertisement.LegacySettings.Passphrase.Password;
                        }

                        if (String.IsNullOrEmpty(txtSsid.Text))
                        {
                            txtSsid.Text = _publisher.Advertisement.LegacySettings.Ssid;
                        }
                    }
                });
            }

            rootPage.NotifyUserFromBackground($"Advertisement: Status: {statusEventArgs.Status}, Error: {statusEventArgs.Error}", NotifyType.StatusMessage);
            return;
        }
        private void btnStartAdvertisement_Click(object sender, RoutedEventArgs e)
        {
            _publisher = new WiFiDirectAdvertisementPublisher();
            _publisher.StatusChanged += OnStatusChanged;

            _listener = new WiFiDirectConnectionListener();

            if (chkListener.IsChecked.Value)
            {
                try
                {
                    // This can raise an exception if the machine does not support WiFi. Sorry.
                    _listener.ConnectionRequested += OnConnectionRequested;
                }
                catch (Exception ex)
                {
                    rootPage.NotifyUser($"Error preparing Advertisement: {ex}", NotifyType.ErrorMessage);
                    return;
                }
            }

            var discoverability = Utils.GetSelectedItemTag<WiFiDirectAdvertisementListenStateDiscoverability>(cmbListenState);
            _publisher.Advertisement.ListenStateDiscoverability = discoverability;

            _publisher.Advertisement.IsAutonomousGroupOwnerEnabled = chkPreferGroupOwnerMode.IsChecked.Value;

            // Legacy settings are meaningful only if IsAutonomousGroupOwnerEnabled is true.
            if (_publisher.Advertisement.IsAutonomousGroupOwnerEnabled && chkLegacySetting.IsChecked.Value)
            {
                _publisher.Advertisement.LegacySettings.IsEnabled = true;
                if (!String.IsNullOrEmpty(txtPassphrase.Text))
                {
                    var creds = new Windows.Security.Credentials.PasswordCredential();
                    creds.Password = txtPassphrase.Text;
                    _publisher.Advertisement.LegacySettings.Passphrase = creds;
                }

                if (!String.IsNullOrEmpty(txtSsid.Text))
                {
                    _publisher.Advertisement.LegacySettings.Ssid = txtSsid.Text;
                }
            }

            // Add the information elements.
            foreach (WiFiDirectInformationElement informationElement in _informationElements)
            {
                _publisher.Advertisement.InformationElements.Add(informationElement);
            }

            _publisher.Start();

            if (_publisher.Status == WiFiDirectAdvertisementPublisherStatus.Started)
            {
                btnStartAdvertisement.IsEnabled = false;
                btnStopAdvertisement.IsEnabled = true;
                rootPage.NotifyUser("Advertisement started.", NotifyType.StatusMessage);
            }
            else
            {
                rootPage.NotifyUser($"Advertisement failed to start. Status is {_publisher.Status}", NotifyType.ErrorMessage);
            }
        }
Пример #32
0
 private void OnStatusChanged(WiFiDirectAdvertisementPublisher sender, WiFiDirectAdvertisementPublisherStatusChangedEventArgs args)
 {
 }