public static IAsyncAction UpdateTile(TetheringState state) { var loader = new Windows.ApplicationModel.Resources.ResourceLoader(); var enabled = state == TetheringState.Enabled; var logo = enabled ? logoOn : logoOff; var deviceName = AppSettings.RemoteDevice; var tileText = string.Format(loader.GetString(enabled ? "Tile_Tooltip_ToDisable" : "Tile_Tooltip_ToEnable"), deviceName); var s = new SecondaryTile(SwitchTileId, tileText, !enabled ? EnableSwitchArgument : DisableSwitchArgument, logo, TileSize.Square150x150); // Specify a foreground text value. return(AsyncInfo.Run(async(cancel) => { try { await s.UpdateAsync(); } catch (Exception) { // Ignore } })); }
public static IAsyncOperation <TetheringState> SendBluetooth(TetheringState state) { return(AsyncInfo.Run(async(cancel) => { if (!await EnableBluetooh()) { return TetheringState.NoBluetooth; } if (AppSettings.RemoteDevice == null) { return TetheringState.Error; } var device = (await GetDevices()).SingleOrDefault(d => d.Name == AppSettings.RemoteDevice); if (device == null) { return TetheringState.Error; } var result = await SendBluetooth(device.Device, state); return result; })); }
public static IAsyncOperation <TetheringState> SendBluetooth(DeviceInformation dev, TetheringState state) { return(AsyncInfo.Run(async(cancel) => { for (var tryout = 10; tryout > 0; tryout--) { try { var selector = RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(ServiceUuid)); var devices = await DeviceInformation.FindAllAsync(selector); var service = devices.SingleOrDefault(d => d.Id.StartsWith(dev.Id, StringComparison.OrdinalIgnoreCase)); if (service == null) { throw new Exception("Tethermote Service not found"); } using (var socket = await ConnectDevice(service)) { using (var outstream = socket.OutputStream) { await outstream.WriteAsync(new byte[] { (byte)state }.AsBuffer()); } using (var instream = socket.InputStream) { var buf = new Windows.Storage.Streams.Buffer(1); var red = (await instream.ReadAsync(buf, 1, Windows.Storage.Streams.InputStreamOptions.Partial)).Length; if (red == 1) { return (TetheringState)buf.ToArray()[0]; } Debug.WriteLine("No data"); } } } catch (Exception ex) { Debug.WriteLine(ex); try { await PingDevice(dev.Id); } catch (Exception e2) { Debug.WriteLine(e2); } if (tryout != 1) { await Task.Delay(100); } } } return TetheringState.Error; })); }