private async void OnConnectionRequested(WiFiDirectConnectionListener sender, WiFiDirectConnectionRequestedEventArgs connectionEventArgs) { WiFiDirectConnectionRequest connectionRequest = connectionEventArgs.GetConnectionRequest(); bool success = await Dispatcher.RunTaskAsync(async() => { return(await HandleConnectionRequestAsync(connectionRequest)); }); if (!success) { // Decline the connection request rootPage.NotifyUserFromBackground($"Connection request from {connectionRequest.DeviceInformation.Name} was declined", NotifyType.ErrorMessage); connectionRequest.Dispose(); } }
public async Task WriteMessageAsync(string message) { try { _dataWriter.WriteUInt32(_dataWriter.MeasureString(message)); _dataWriter.WriteString(message); await _dataWriter.StoreAsync(); _rootPage.NotifyUserFromBackground("Sent message: " + message, NotifyType.StatusMessage); } catch (Exception ex) { _rootPage.NotifyUserFromBackground("WriteMessage threw exception: " + ex.Message, NotifyType.StatusMessage); } }
private void OnEnumerationCompleted(DeviceWatcher deviceWatcher, object o) { rootPage.NotifyUserFromBackground("DeviceWatcher enumeration completed", NotifyType.StatusMessage); }
private async void OnConnectionRequested(WiFiDirectConnectionListener sender, WiFiDirectConnectionRequestedEventArgs connectionEventArgs) { try { var connectionRequest = connectionEventArgs.GetConnectionRequest(); var tcs = new TaskCompletionSource <bool>(); var dialogTask = tcs.Task; var messageDialog = new MessageDialog("Connection request received from " + connectionRequest.DeviceInformation.Name, "Connection Request"); // Add commands and set their callbacks; both buttons use the same callback function instead of inline event handlers messageDialog.Commands.Add(new UICommand("Accept", null, 0)); messageDialog.Commands.Add(new UICommand("Decline", null, 1)); // Set the command that will be invoked by default messageDialog.DefaultCommandIndex = 1; // Set the command to be invoked when escape is pressed messageDialog.CancelCommandIndex = 1; await Dispatcher.RunAsync(CoreDispatcherPriority.High, async() => { // Show the message dialog var commandChosen = await messageDialog.ShowAsync(); tcs.SetResult((commandChosen.Label == "Accept") ? true : false); }); var fProceed = await dialogTask; if (fProceed == true) { var tcsWiFiDirectDevice = new TaskCompletionSource <WiFiDirectDevice>(); var wfdDeviceTask = tcsWiFiDirectDevice.Task; await Dispatcher.RunAsync(CoreDispatcherPriority.High, async() => { try { rootPage.NotifyUser("Connecting to " + connectionRequest.DeviceInformation.Name + "...", NotifyType.StatusMessage); WiFiDirectConnectionParameters connectionParams = new WiFiDirectConnectionParameters(); connectionParams.GroupOwnerIntent = Convert.ToInt16(txtGOIntent.Text); // IMPORTANT: FromIdAsync needs to be called from the UI thread tcsWiFiDirectDevice.SetResult(await WiFiDirectDevice.FromIdAsync(connectionRequest.DeviceInformation.Id, connectionParams)); } catch (Exception ex) { rootPage.NotifyUser("FromIdAsync task threw an exception: " + ex.ToString(), NotifyType.ErrorMessage); } }); WiFiDirectDevice wfdDevice = await wfdDeviceTask; // Register for the ConnectionStatusChanged event handler wfdDevice.ConnectionStatusChanged += OnConnectionStatusChanged; await Dispatcher.RunAsync(CoreDispatcherPriority.High, () => { ConnectedDevice connectedDevice = new ConnectedDevice("Waiting for client to connect...", wfdDevice, null); _connectedDevices.Add(connectedDevice); }); var EndpointPairs = wfdDevice.GetConnectionEndpointPairs(); _listenerSocket = null; _listenerSocket = new StreamSocketListener(); _listenerSocket.ConnectionReceived += OnSocketConnectionReceived; await _listenerSocket.BindEndpointAsync(EndpointPairs[0].LocalHostName, Globals.strServerPort); rootPage.NotifyUserFromBackground("Devices connected on L2, listening on IP Address: " + EndpointPairs[0].LocalHostName.ToString() + " Port: " + Globals.strServerPort, NotifyType.StatusMessage); } else { // Decline the connection request rootPage.NotifyUserFromBackground("Connection request from " + connectionRequest.DeviceInformation.Name + " was declined", NotifyType.ErrorMessage); connectionRequest.Dispose(); } } catch (Exception ex) { rootPage.NotifyUserFromBackground("Connect operation threw an exception: " + ex.Message, NotifyType.ErrorMessage); } }