public EasyServerViewModel(IUserDialogs dialogs, IBleAdapter adapter) { this.adapter = adapter; this.dialogs = dialogs; adapter .WhenStatusChanged() .Subscribe(x => this.Status = x); this.ToggleServer = ReactiveCommand.CreateFromTask( _ => { this.BuildServer(); if (this.server.IsRunning) { this.server.Stop(); } else { this.server.Start(new AdvertisementData { LocalName = "TestServer" }); } return(Task.FromResult(new object())); }, this.WhenAny( x => x.Status, x => x.Value == AdapterStatus.PoweredOn ) ); this.Clear = new Command(() => this.Output = String.Empty); }
private void DeviceDiscoveredHandler(IBleAdapter sender, BleDeviceEventArgs args) { var device = args.Device; var deviceId = device.Id; var pd = new ProxiedBleDevice(sender, device); _cachingProvider.Set(GetDeviceCacheKey(deviceId), pd, DiscoveredDeviceCachingTime); }
private void DeviceDisconnectedHandler(IBleAdapter sender, BleDeviceEventArgs args) { var device = args.Device; var deviceId = device.Id; lock (lockObject) { Devices.Remove(deviceId); _cachingProvider.RemoveByPrefix(DiscoveredDeviceCachePrefix); } }
private void DeviceConnectedHandler(IBleAdapter sender, BleDeviceEventArgs args) { var device = args.Device; var deviceId = device.Id; lock (lockObject) { if (!Devices.ContainsKey(deviceId)) { Devices[deviceId] = new ProxiedBleDevice(sender, device); } } }
public ProxiedBleDevice(IBleAdapter adapter, BleDevice device) { Device = device; Adapter = adapter; }
private void DeviceValueChangedHandler(IBleAdapter sender, BleDeviceValueChangedEventArgs args) { Task.Run(() => _onDeviceValueChangedNotifier.Push(args.DeviceUuid, args)); }