private void OnBarometerChanged(object sender, BandSensorReadingEventArgs<BandBarometerReading> e)
{
var pReading = e.SensorReading.AirPressure;
var tReading = e.SensorReading.Temperature;
if (count < filter.Length) {
this.RunOnUiThread (() => {
height.Text = "zeroing...";
});
filter [count] = pReading;
count++;
if (filter.Length == count) {
pReading = 0;
for (int x = 0; x < filter.Length; x++)
pReading += filter [x];
pReading /= filter.Length;
zeroAGL = (1 - Math.Pow (pReading / 1013.25, 0.190284)) * 145366.45;
zeroed = true;
Model.Instance.Client.NotificationManager.VibrateAsync(VibrationType.NotificationOneTone);
}
if (tileFound) {
PageData pageContent = new PageData {
PageId = pageId,
PageLayoutIndex = 0,
Data = {
new TextBlockData {
ElementId = 1,
Text = "Pull Alt:"
},
new TextBlockData {
ElementId = 2,
Text = "Zeroing..."
},
new ImageData {
ElementId = 10,
ImageIndex = 1
},
new TextBlockData {
ElementId = 5,
Text = altitudeAGL.ToString()
}
}
};
Model.Instance.Client.TileManager.SetTilePageDataAsync (tileId, pageContent);
}
} else {
altitudeAGL = (int)(((1 - Math.Pow (pReading / 1013.25, 0.190284)) * 145366.45) - zeroAGL);
if (zeroed)
{
if (altitudeAGL <= pullAltitude + 100 && altitudeAGL >= pullAltitude - 100) {
if (!fired) {
//vibrate
Model.Instance.Client.NotificationManager.VibrateAsync(VibrationType.NotificationAlarm);
fired = true;
}
} else {
fired = false;
}
}
this.RunOnUiThread (() => {
pressure.Text = string.Format ("{0,6:0} hPa", pReading);
height.Text = string.Format ("{0,6:0} ft", altitudeAGL);
});
if (tileFound) {
PageData pageContent = new PageData ();
BuildPageData (pageContent);
Model.Instance.Client.TileManager.SetTilePageDataAsync (tileId, pageContent);
}
}
}