private async Task TestReadableSensor(IEarable earable, IReadableSensor <SensorValueType> sensor) { await EarableUtility.Reconnect(earable); Status.StatusUpdate("Reading value of sensor {0}", sensor); Status.StatusUpdate("Current value is {0}", await sensor.ReadAsync()); }
public static async Task Reconnect(IEarable earable) { await earable.DisconnectAsync(); Assert.True(!earable.IsConnected(), "Earable disconnected now"); await Task.Delay(2000); Assert.True(await earable.ConnectAsync(), "ConnectAsync succeeds"); Assert.True(earable.IsConnected(), "Earable connected after connect"); }
public async override Task Run(IEarable earable) { SensorType sensor = earable.GetSensor <SensorType>(); Assert.NotNull(sensor); Assert.True(sensor is SensorType); if (sensor is IReadableSensor <SensorValueType> readable) { await TestReadableSensor(earable, readable); } if (sensor is ISubscribableSensor <SensorValueType> subscribable) { await TestSubscribableSensor(earable, subscribable); } }
private async Task TestSubscribableSensor(IEarable earable, ISubscribableSensor <SensorValueType> sensor) { await EarableUtility.Reconnect(earable); _sampleReceiver = new TaskCompletionSource <SensorValueType>(); sensor.ValueChanged += OnValueChanged; Status.StatusUpdate("Subscribing to sensor {0}", sensor); await sensor.StartSamplingAsync(); Status.StatusUpdate("Waiting for a value update from sensor {0}", sensor); var valueReceived = _sampleReceiver.Task; var timeout = Task.Delay(10000); await Task.WhenAny(valueReceived, timeout); _sampleReceiver = null; await sensor.StopSamplingAsync(); sensor.ValueChanged -= OnValueChanged; Assert.True(valueReceived.IsCompleted, "Result recieved within 10 seconds."); Status.StatusUpdate("Received value {1} from sensor {0}", sensor, valueReceived.Result); }
public EarableEventArgs(IEarable earable) { Earable = earable; }
internal BluetoothDevice(IEarable earable) { }