return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ X = sensorData.values[0];
+ Y = sensorData.values[1];
+ Z = sensorData.values[2];
+
+ DataUpdated?.Invoke(this, new AccelerometerDataUpdatedEventArgs(sensorData.values));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for accelerometer sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for accelerometer");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- X = sensorData.values[0];
- Y = sensorData.values[1];
- Z = sensorData.values[2];
-
- DataUpdated?.Invoke(this, new AccelerometerDataUpdatedEventArgs(sensorData.values));
- }
}
}
/// </summary>
public SensorDataAccuracy ActivityAccuracy { get; protected set; }
- internal abstract void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data);
-
internal ActivityDetector(uint index) : base(index)
{
}
-
- internal override void EventListenStart()
- {
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
- if (error != (int)SensorError.None)
- {
- Log.Error(Globals.LogTag, "Error setting event callback for activity detector");
- throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for activity detector");
- }
- }
-
- internal override void EventListenStop()
- {
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
- if (error != (int)SensorError.None)
- {
- Log.Error(Globals.LogTag, "Error unsetting event callback for activity detector");
- throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for activity detector");
- }
- }
}
}
/// </summary>
public event EventHandler<FaceDownGestureDetectorDataUpdatedEventArgs> DataUpdated;
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ FaceDown = (DetectorState) sensorData.values[0];
+
+ DataUpdated?.Invoke(this, new FaceDownGestureDetectorDataUpdatedEventArgs(sensorData.values[0]));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for face down gesture detector");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for face down gesture detector");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- FaceDown = (DetectorState) sensorData.values[0];
-
- DataUpdated?.Invoke(this, new FaceDownGestureDetectorDataUpdatedEventArgs(sensorData.values[0]));
- }
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ X = sensorData.values[0];
+ Y = sensorData.values[1];
+ Z = sensorData.values[2];
+
+ DataUpdated?.Invoke(this, new GravitySensorDataUpdatedEventArgs(sensorData.values));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for gravity sensor");
}
}
+ private static Interop.SensorListener.SensorAccuracyCallback _accuracyCallback;
+
private void AccuracyListenStart()
{
- int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, AccuracyEventCallback, IntPtr.Zero);
+ _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => {
+ TimeSpan = new TimeSpan((Int64)timestamp);
+ _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy));
+ };
+
+ int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, _accuracyCallback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting accuracy event callback for gravity sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset accuracy event callback for gravity");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- X = sensorData.values[0];
- Y = sensorData.values[1];
- Z = sensorData.values[2];
-
- DataUpdated?.Invoke(this, new GravitySensorDataUpdatedEventArgs(sensorData.values));
- }
-
- private void AccuracyEventCallback(IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data)
- {
- TimeSpan = new TimeSpan((Int64)timestamp);
- _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy));
- }
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ X = sensorData.values[0];
+ Y = sensorData.values[1];
+ Z = sensorData.values[2];
+
+ DataUpdated?.Invoke(this, new GyroscopeDataUpdatedEventArgs(sensorData.values));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for gyroscope sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for gyroscope");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- X = sensorData.values[0];
- Y = sensorData.values[1];
- Z = sensorData.values[2];
-
- DataUpdated?.Invoke(this, new GyroscopeDataUpdatedEventArgs(sensorData.values));
- }
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ X = sensorData.values[0];
+ Y = sensorData.values[1];
+ Z = sensorData.values[2];
+ W = sensorData.values[3];
+ Accuracy = sensorData.accuracy;
+
+ DataUpdated?.Invoke(this, new GyroscopeRotationVectorSensorDataUpdatedEventArgs(sensorData.values, sensorData.accuracy));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for gyroscope rotation vector sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for gyroscope rotation vector");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- X = sensorData.values[0];
- Y = sensorData.values[1];
- Z = sensorData.values[2];
- Accuracy = sensorData.accuracy;
-
- DataUpdated?.Invoke(this, new GyroscopeRotationVectorSensorDataUpdatedEventArgs(sensorData.values, sensorData.accuracy));
- }
-
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ HeartRate = (int)sensorData.values[0];
+
+ DataUpdated?.Invoke(this, new HeartRateMonitorDataUpdatedEventArgs((int)sensorData.values[0]));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for heart rate monitor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for heart rate");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- HeartRate = (int)sensorData.values[0];
-
- DataUpdated?.Invoke(this, new HeartRateMonitorDataUpdatedEventArgs((int)sensorData.values[0]));
- }
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Humidity = sensorData.values[0];
+
+ DataUpdated?.Invoke(this, new HumiditySensorDataUpdatedEventArgs(sensorData.values[0]));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for humidity sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for humidity");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- Humidity = sensorData.values[0];
-
- DataUpdated?.Invoke(this, new HumiditySensorDataUpdatedEventArgs(sensorData.values[0]));
- }
}
}
/// </summary>
public event EventHandler<InVehicleActivityDetectorDataUpdatedEventArgs> DataUpdated;
- internal override void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
+ internal override void EventListenStart()
{
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- InVehicle = (DetectorState)sensorData.values[0];
- ActivityAccuracy = (SensorDataAccuracy) sensorData.accuracy;
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ InVehicle = (DetectorState)sensorData.values[0];
+ ActivityAccuracy = (SensorDataAccuracy) sensorData.accuracy;
+
+ DataUpdated?.Invoke(this, new InVehicleActivityDetectorDataUpdatedEventArgs(sensorData.values[0]));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error setting event callback for invehicle activity detector");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for invehicle activity detector");
+ }
+ }
- DataUpdated?.Invoke(this, new InVehicleActivityDetectorDataUpdatedEventArgs(sensorData.values[0]));
+ internal override void EventListenStop()
+ {
+ int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error unsetting event callback for invehicle activity detector");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for invehicle activity detector");
+ }
}
internal override SensorType GetSensorType()
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Level = sensorData.values[0];
+
+ DataUpdated?.Invoke(this, new LightSensorDataUpdatedEventArgs(sensorData.values[0]));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for light sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for light");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- Level = sensorData.values[0];
-
- DataUpdated?.Invoke(this, new LightSensorDataUpdatedEventArgs(sensorData.values[0]));
- }
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ X = sensorData.values[0];
+ Y = sensorData.values[1];
+ Z = sensorData.values[2];
+
+ DataUpdated?.Invoke(this, new LinearAccelerationSensorDataUpdatedEventArgs(sensorData.values));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for linear acceleration sensor");
}
}
+ private static Interop.SensorListener.SensorAccuracyCallback _accuracyCallback;
+
private void AccuracyListenStart()
{
- int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, AccuracyEventCallback, IntPtr.Zero);
+ _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => {
+ TimeSpan = new TimeSpan((Int64)timestamp);
+ _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy));
+ };
+
+ int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, _accuracyCallback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting accuracy event callback for linear acceleration sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset accuracy event callback for linear acceleration sensor");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- X = sensorData.values[0];
- Y = sensorData.values[1];
- Z = sensorData.values[2];
-
- DataUpdated?.Invoke(this, new LinearAccelerationSensorDataUpdatedEventArgs(sensorData.values));
- }
-
- private void AccuracyEventCallback(IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data)
- {
- TimeSpan = new TimeSpan((Int64)timestamp);
- _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy));
- }
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ X = sensorData.values[0];
+ Y = sensorData.values[1];
+ Z = sensorData.values[2];
+
+ DataUpdated?.Invoke(this, new MagnetometerDataUpdatedEventArgs(sensorData.values));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for magnetometer");
}
}
+ private static Interop.SensorListener.SensorAccuracyCallback _accuracyCallback;
+
private void AccuracyListenStart()
{
- int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, AccuracyEventCallback, IntPtr.Zero);
+ _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => {
+ TimeSpan = new TimeSpan((Int64)timestamp);
+ _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy));
+ };
+
+ int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, _accuracyCallback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting accuracy event callback for magnetometer");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset accuracy event callback for magnetometer");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- X = sensorData.values[0];
- Y = sensorData.values[1];
- Z = sensorData.values[2];
-
- DataUpdated?.Invoke(this, new MagnetometerDataUpdatedEventArgs(sensorData.values));
- }
-
- private void AccuracyEventCallback(IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data)
- {
- TimeSpan = new TimeSpan((Int64)timestamp);
- _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy));
- }
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ X = sensorData.values[0];
+ Y = sensorData.values[1];
+ Z = sensorData.values[2];
+ W = sensorData.values[3];
+ Accuracy = sensorData.accuracy;
+
+ DataUpdated?.Invoke(this, new MagnetometerRotationVectorSensorDataUpdatedEventArgs(sensorData.values, sensorData.accuracy));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for magnetometer rotation vector sensor");
}
}
+ private static Interop.SensorListener.SensorAccuracyCallback _accuracyCallback;
+
private void AccuracyListenStart()
{
- int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, AccuracyEventCallback, IntPtr.Zero);
+ _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => {
+ TimeSpan = new TimeSpan((Int64)timestamp);
+ Accuracy = accuracy;
+ _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy));
+ };
+
+ int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, _accuracyCallback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting accuracy event callback for magnetometer rotation vector sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset accuracy event callback for magnetometer rotation vector");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- X = sensorData.values[0];
- Y = sensorData.values[1];
- Z = sensorData.values[2];
- Accuracy = sensorData.accuracy;
-
- DataUpdated?.Invoke(this, new MagnetometerRotationVectorSensorDataUpdatedEventArgs(sensorData.values, sensorData.accuracy));
- }
-
- private void AccuracyEventCallback(IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data)
- {
- TimeSpan = new TimeSpan((Int64)timestamp);
- Accuracy = accuracy;
- _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy));
- }
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Azimuth = sensorData.values[0];
+ Pitch = sensorData.values[1];
+ Roll = sensorData.values[2];
+
+ DataUpdated?.Invoke(this, new OrientationSensorDataUpdatedEventArgs(sensorData.values));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for orientation sensor");
}
}
+ private static Interop.SensorListener.SensorAccuracyCallback _accuracyCallback;
+
private void AccuracyListenStart()
{
- int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, AccuracyEventCallback, IntPtr.Zero);
+ _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => {
+ TimeSpan = new TimeSpan((Int64)timestamp);
+ _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy));
+ };
+
+ int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, _accuracyCallback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting accuracy event callback for orientation sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset accuracy event callback for orientation");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- Azimuth = sensorData.values[0];
- Pitch = sensorData.values[1];
- Roll = sensorData.values[2];
-
- DataUpdated?.Invoke(this, new OrientationSensorDataUpdatedEventArgs(sensorData.values));
- }
-
- private void AccuracyEventCallback(IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data)
- {
- TimeSpan = new TimeSpan((Int64)timestamp);
- _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy));
- }
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ StepCount = (uint)sensorData.values[0];
+ WalkStepCount = (uint)sensorData.values[1];
+ RunStepCount = (uint)sensorData.values[2];
+ MovingDistance = sensorData.values[3];
+ CalorieBurned = sensorData.values[4];
+ LastSpeed = sensorData.values[5];
+ LastSteppingFrequency = sensorData.values[6];
+ LastStepStatus = (PedometerState)sensorData.values[7];
+
+ DataUpdated?.Invoke(this, new PedometerDataUpdatedEventArgs(sensorData.values));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for pedometer sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for pedometer");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- StepCount = (uint)sensorData.values[0];
- WalkStepCount = (uint)sensorData.values[1];
- RunStepCount = (uint)sensorData.values[2];
- MovingDistance = sensorData.values[3];
- CalorieBurned = sensorData.values[4];
- LastSpeed = sensorData.values[5];
- LastSteppingFrequency = sensorData.values[6];
- LastStepStatus = (PedometerState)sensorData.values[7];
-
- DataUpdated?.Invoke(this, new PedometerDataUpdatedEventArgs(sensorData.values));
- }
}
}
/// </summary>
public event EventHandler<PickUpGestureDetectorDataUpdatedEventArgs> DataUpdated;
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ PickUp = (DetectorState) sensorData.values[0];
+
+ DataUpdated?.Invoke(this, new PickUpGestureDetectorDataUpdatedEventArgs(sensorData.values[0]));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for pick up gesture detector");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for pick up gesture detector");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- PickUp = (DetectorState) sensorData.values[0];
-
- DataUpdated?.Invoke(this, new PickUpGestureDetectorDataUpdatedEventArgs(sensorData.values[0]));
- }
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Pressure = sensorData.values[0];
+
+ DataUpdated?.Invoke(this, new PressureSensorDataUpdatedEventArgs(sensorData.values[0]));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for pressure sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for pressure");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- Pressure = sensorData.values[0];
-
- DataUpdated?.Invoke(this, new PressureSensorDataUpdatedEventArgs(sensorData.values[0]));
- }
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Proximity = (ProximitySensorState) sensorData.values[0];
+
+ DataUpdated?.Invoke(this, new ProximitySensorDataUpdatedEventArgs(sensorData.values[0]));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for proximity sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for proximity");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- Proximity = (ProximitySensorState) sensorData.values[0];
-
- DataUpdated?.Invoke(this, new ProximitySensorDataUpdatedEventArgs(sensorData.values[0]));
- }
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ X = sensorData.values[0];
+ Y = sensorData.values[1];
+ Z = sensorData.values[2];
+ W = sensorData.values[3];
+ Accuracy = sensorData.accuracy;
+
+ DataUpdated?.Invoke(this, new RotationVectorSensorDataUpdatedEventArgs(sensorData.values, sensorData.accuracy));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for rotation vector sensor");
}
}
+ private static Interop.SensorListener.SensorAccuracyCallback _accuracyCallback;
+
private void AccuracyListenStart()
{
- int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, AccuracyEventCallback, IntPtr.Zero);
+ _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => {
+ TimeSpan = new TimeSpan((Int64)timestamp);
+ Accuracy = accuracy;
+ _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy));
+ };
+
+ int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, _accuracyCallback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting accuracy event callback for rotation vector sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset accuracy event callback for rotation vector");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- X = sensorData.values[0];
- Y = sensorData.values[1];
- Z = sensorData.values[2];
- Accuracy = sensorData.accuracy;
-
- DataUpdated?.Invoke(this, new RotationVectorSensorDataUpdatedEventArgs(sensorData.values, sensorData.accuracy));
- }
-
- private void AccuracyEventCallback(IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data)
- {
- TimeSpan = new TimeSpan((Int64)timestamp);
- Accuracy = accuracy;
- _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy));
- }
}
}
/// </summary>
public event EventHandler<RunningActivityDetectorDataUpdatedEventArgs> DataUpdated;
- internal override void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
+ internal override void EventListenStart()
{
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- Running = (DetectorState)sensorData.values[0];
- ActivityAccuracy = (SensorDataAccuracy) sensorData.accuracy;
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Running = (DetectorState)sensorData.values[0];
+ ActivityAccuracy = (SensorDataAccuracy) sensorData.accuracy;
+
+ DataUpdated?.Invoke(this, new RunningActivityDetectorDataUpdatedEventArgs(sensorData.values[0]));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error setting event callback for running activity detector");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for running activity detector");
+ }
+ }
- DataUpdated?.Invoke(this, new RunningActivityDetectorDataUpdatedEventArgs(sensorData.values[0]));
+ internal override void EventListenStop()
+ {
+ int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error unsetting event callback for running activity detector");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for running activity detector");
+ }
}
internal override SensorType GetSensorType()
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ SleepState = (SleepMonitorState)sensorData.values[0];
+
+ DataUpdated?.Invoke(this, new SleepMonitorDataUpdatedEventArgs((int)sensorData.values[0]));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for sleep monitor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for sleep");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- SleepState = (SleepMonitorState)sensorData.values[0];
-
- DataUpdated?.Invoke(this, new SleepMonitorDataUpdatedEventArgs((int)sensorData.values[0]));
- }
}
}
/// </summary>
public event EventHandler<StationaryActivityDetectorDataUpdatedEventArgs> DataUpdated;
- internal override void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
+ internal static Interop.SensorListener.SensorEventCallback _callback;
+
+ internal override void EventListenStart()
{
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- Stationary = (DetectorState)sensorData.values[0];
- ActivityAccuracy = (SensorDataAccuracy) sensorData.accuracy;
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Stationary = (DetectorState)sensorData.values[0];
+ ActivityAccuracy = (SensorDataAccuracy) sensorData.accuracy;
+
+ DataUpdated?.Invoke(this, new StationaryActivityDetectorDataUpdatedEventArgs(sensorData.values[0]));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error setting event callback for stationary activity detector");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for stationary activity detector");
+ }
+ }
- DataUpdated?.Invoke(this, new StationaryActivityDetectorDataUpdatedEventArgs(sensorData.values[0]));
+ internal override void EventListenStop()
+ {
+ int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error unsetting event callback for stationary activity detector");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for stationary activity detector");
+ }
}
internal override SensorType GetSensorType()
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Temperature = sensorData.values[0];
+
+ DataUpdated?.Invoke(this, new TemperatureSensorDataUpdatedEventArgs(sensorData.values[0]));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for temperature sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for temperature");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- Temperature = sensorData.values[0];
-
- DataUpdated?.Invoke(this, new TemperatureSensorDataUpdatedEventArgs(sensorData.values[0]));
- }
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ UltravioletIndex = sensorData.values[0];
+
+ DataUpdated?.Invoke(this, new UltravioletSensorDataUpdatedEventArgs(sensorData.values[0]));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for ultraviolet sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for ultraviolet");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- UltravioletIndex = sensorData.values[0];
-
- DataUpdated?.Invoke(this, new UltravioletSensorDataUpdatedEventArgs(sensorData.values[0]));
- }
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ X = sensorData.values[0];
+ Y = sensorData.values[1];
+ Z = sensorData.values[2];
+ BiasX = sensorData.values[3];
+ BiasY = sensorData.values[4];
+ BiasZ = sensorData.values[5];
+
+ DataUpdated?.Invoke(this, new UncalibratedGyroscopeDataUpdatedEventArgs(sensorData.values));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for uncalibrated gyroscope sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for uncalibrated gyroscope");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- X = sensorData.values[0];
- Y = sensorData.values[1];
- Z = sensorData.values[2];
- BiasX = sensorData.values[3];
- BiasY = sensorData.values[4];
- BiasZ = sensorData.values[5];
-
- DataUpdated?.Invoke(this, new UncalibratedGyroscopeDataUpdatedEventArgs(sensorData.values));
- }
}
}
return count;
}
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ X = sensorData.values[0];
+ Y = sensorData.values[1];
+ Z = sensorData.values[2];
+ BiasX = sensorData.values[3];
+ BiasY = sensorData.values[4];
+ BiasZ = sensorData.values[5];
+
+ DataUpdated?.Invoke(this, new UncalibratedMagnetometerDataUpdatedEventArgs(sensorData.values));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for uncalibrated magnetometer sensor");
}
}
+ private static Interop.SensorListener.SensorAccuracyCallback _accuracyCallback;
+
private void AccuracyListenStart()
{
- int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, AccuracyEventCallback, IntPtr.Zero);
+ _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => {
+ TimeSpan = new TimeSpan((Int64)timestamp);
+ _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy));
+ };
+
+ int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, _accuracyCallback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting accuracy event callback for uncalibrated magnetometer");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset accuracy event callback for uncalibrated magnetometer");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- X = sensorData.values[0];
- Y = sensorData.values[1];
- Z = sensorData.values[2];
- BiasX = sensorData.values[3];
- BiasY = sensorData.values[4];
- BiasZ = sensorData.values[5];
-
- DataUpdated?.Invoke(this, new UncalibratedMagnetometerDataUpdatedEventArgs(sensorData.values));
- }
-
- private void AccuracyEventCallback(IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data)
- {
- TimeSpan = new TimeSpan((Int64)timestamp);
- _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy));
- }
}
}
/// </summary>
public event EventHandler<WalkingActivityDetectorDataUpdatedEventArgs> DataUpdated;
- internal override void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
+ internal static Interop.SensorListener.SensorEventCallback _callback;
+
+ internal override void EventListenStart()
{
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- Walking = (DetectorState)sensorData.values[0];
- ActivityAccuracy = (SensorDataAccuracy) sensorData.accuracy;
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Walking = (DetectorState)sensorData.values[0];
+ ActivityAccuracy = (SensorDataAccuracy) sensorData.accuracy;
+
+ DataUpdated?.Invoke(this, new WalkingActivityDetectorDataUpdatedEventArgs(sensorData.values[0]));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error setting event callback for walking activity detector");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for walking activity detector");
+ }
+ }
- DataUpdated?.Invoke(this, new WalkingActivityDetectorDataUpdatedEventArgs(sensorData.values[0]));
+ internal override void EventListenStop()
+ {
+ int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error unsetting event callback for walking activity detector");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for walking activity detector");
+ }
}
internal override SensorType GetSensorType()
/// </summary>
public event EventHandler<WristUpGestureDetectorDataUpdatedEventArgs> DataUpdated;
+ private static Interop.SensorListener.SensorEventCallback _callback;
+
internal override void EventListenStart()
{
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, SensorEventCallback, IntPtr.Zero);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
+ Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ WristUp = (DetectorState) sensorData.values[0];
+
+ DataUpdated?.Invoke(this, new WristUpGestureDetectorDataUpdatedEventArgs(sensorData.values[0]));
+ };
+
+ int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for wrist up gesture detector");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for wrist up gesture detector");
}
}
-
- private void SensorEventCallback(IntPtr sensorHandle, IntPtr sensorPtr, IntPtr data)
- {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(sensorPtr);
- TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
- WristUp = (DetectorState) sensorData.values[0];
-
- DataUpdated?.Invoke(this, new WristUpGestureDetectorDataUpdatedEventArgs(sensorData.values[0]));
- }
}
}