/// <summary> /// start the sensor /// </summary> protected override bool StartSensor(SensorRate speed) { // Register for reading changes. Xamarin.Essentials.OrientationSensor.ReadingChanged += OrientationSensor_ReadingChanged; Xamarin.Essentials.OrientationSensor.Start(ConvertSensorRate(speed)); return(true); }
/// <summary> /// start the sensor /// </summary> protected override bool StartSensor(SensorRate speed) { if (!_gpsStarted) { _gpsStarted = true; _request.DesiredAccuracy = (GeolocationAccuracy)(int)speed; _gpsTask = Task.Run(async() => { while (_gpsStarted) { try { Location oldLocation = Location.Value; // get stock price Location location = await GetLocationAsync(); if (_gpsStarted) { // todo: add check for min distance change Location.SendNotification(); } } catch { } await Task.Delay(_gpsTaskDelayInMilliSeconds[(int)speed]); } }); } return(true); }
/// <summary> /// start the sensor /// </summary> protected override bool StartSensor(SensorRate speed) { // Register for reading changes. Xamarin.Essentials.Compass.ReadingChanged += Compass_ReadingChanged; Xamarin.Essentials.Compass.Start(ConvertSensorRate(speed)); return(true); }
/// <summary> /// start the sensor /// </summary> protected override bool StartSensor(SensorRate speed) { // subscribe for reading changes Xamarin.Essentials.Accelerometer.ReadingChanged += Accelerometer_ReadingChanged; Xamarin.Essentials.Accelerometer.ShakeDetected += Accelerometer_ShakeDetected; Xamarin.Essentials.Accelerometer.Start(ConvertSensorRate(speed)); return(true); }
/// <summary> /// constructor /// </summary> protected BaseServiceNode(string id, IotNode parent, SensorRate speed = SensorRate.Medium) : base(id, parent) { Status = new SensorStatusData() { Id = "Status", Parent = this, SensorRate = speed, IsOn = false }; UpsertData(Status); }
/// <summary> /// start all sensors /// </summary> public void StartAll(SensorRate rate = SensorRate.Medium) { foreach (IotNode node in Children) { BaseServiceNode sensor = node as BaseServiceNode; if (sensor == null) { continue; } sensor.Status.SensorRate = rate; sensor.Start(); } }
/// <summary> /// change the status /// </summary> public void SetStatus(SensorRate rate, bool onOff) { SensorStatusData data = this.Status; if (data.SensorRate != rate || data.IsOn != onOff) { data.SensorRate = rate; if (data.IsOn && !onOff) { StopSensor(); } else { StartSensor(rate); } } }
protected SensorSpeed ConvertSensorRate(SensorRate rate) { switch (rate) { case SensorRate.Lowest: case SensorRate.Low: case SensorRate.Medium: return(SensorSpeed.UI); case SensorRate.Default: return(SensorSpeed.Default); case SensorRate.High: return(SensorSpeed.Game); case SensorRate.Best: return(SensorSpeed.Fastest); } return(SensorSpeed.UI); }
/// <summary> /// start the sensor /// </summary> protected override bool StartSensor(SensorRate speed) { return(true); }
/// <summary> /// start the sensor, return true if sensor started /// </summary> protected abstract bool StartSensor(SensorRate speed);