{
//Sensor Listener CAPI
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+ [Obsolete("Deprecated since API level 8. Please use the SensorEventsCallback instead.")]
internal delegate void SensorEventCallback(IntPtr sensorHandle, IntPtr eventData, IntPtr data);
+
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+ internal delegate void SensorEventsCallback(IntPtr sensorHandle, IntPtr eventsData, uint events_count, IntPtr data);
+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate void SensorAccuracyCallback(IntPtr sensorHandle, ulong timestamp, SensorDataAccuracy accuracy, IntPtr data);
internal static extern int StopListener(IntPtr listenerHandle);
[DllImport(Libraries.Sensor, EntryPoint = "sensor_listener_set_event_cb")]
+ [Obsolete("Deprecated since API level 8. Please use the SetEventsCallback instead.")]
internal static extern int SetEventCallback(IntPtr listenerHandle, uint intervalMs, SensorEventCallback callback, IntPtr data);
+ [DllImport(Libraries.Sensor, EntryPoint = "sensor_listener_set_events_cb")]
+ internal static extern int SetEventsCallback(IntPtr listenerHandle, SensorEventsCallback callback, IntPtr data);
+
[DllImport(Libraries.Sensor, EntryPoint = "sensor_listener_unset_event_cb")]
+ [Obsolete("Deprecated since API level 8. Please use the UnsetEventsCallback instead.")]
internal static extern int UnsetEventCallback(IntPtr listernerHandle);
+ [DllImport(Libraries.Sensor, EntryPoint = "sensor_listener_unset_events_cb")]
+ internal static extern int UnsetEventsCallback(IntPtr listernerHandle);
+
[DllImport(Libraries.Sensor, EntryPoint = "sensor_listener_set_accuracy_cb")]
internal static extern int SetAccuracyCallback(IntPtr listenerHandle, SensorAccuracyCallback callback, IntPtr data);
Z = sensorData.values[2];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
-
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
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);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for accelerometer sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for accelerometer sensor");
Accuracy = sensorData.accuracy;
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
if (sensorData.values[0] == 0) {
DataUpdated?.Invoke(this, new AutoRotationSensorDataUpdatedEventArgs(sensorData.values, sensorData.accuracy));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for auto rotation sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for auto rotation sensor");
/// <since_tizen> 3 </since_tizen>
public event EventHandler<FaceDownGestureDetectorDataUpdatedEventArgs> DataUpdated;
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
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);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for face down gesture detector");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for face down gesture detector");
Z = sensorData.values[2];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
X = sensorData.values[0];
DataUpdated?.Invoke(this, new GravitySensorDataUpdatedEventArgs(sensorData.values));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for gravity sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for gravity sensor");
Z = sensorData.values[2];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
X = sensorData.values[0];
DataUpdated?.Invoke(this, new GyroscopeDataUpdatedEventArgs(sensorData.values));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for gyroscope sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for gyroscope sensor");
Accuracy = sensorData.accuracy;
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
X = sensorData.values[0];
DataUpdated?.Invoke(this, new GyroscopeRotationVectorSensorDataUpdatedEventArgs(sensorData.values, sensorData.accuracy));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for gyroscope rotation vector sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for gyroscope rotation vector sensor");
HeartRate = (int)sensorData.values[0];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
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);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for heart rate monitor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for heart rate monitor");
Humidity = sensorData.values[0];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
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);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for humidity sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for humidity sensor");
/// <since_tizen> 3 </since_tizen>
public event EventHandler<InVehicleActivityDetectorDataUpdatedEventArgs> DataUpdated;
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
InVehicle = (DetectorState)sensorData.values[0];
DataUpdated?.Invoke(this, new InVehicleActivityDetectorDataUpdatedEventArgs(sensorData.values[0]));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for invehicle activity detector");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for invehicle activity detector");
Level = sensorData.values[0];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
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);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for light sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for light sensor");
Z = sensorData.values[2];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
X = sensorData.values[0];
DataUpdated?.Invoke(this, new LinearAccelerationSensorDataUpdatedEventArgs(sensorData.values));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for linear acceleration sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for linear acceleration sensor");
Z = sensorData.values[2];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
X = sensorData.values[0];
DataUpdated?.Invoke(this, new MagnetometerDataUpdatedEventArgs(sensorData.values));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for magnetometer");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for magnetometer");
Accuracy = sensorData.accuracy;
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
X = sensorData.values[0];
DataUpdated?.Invoke(this, new MagnetometerRotationVectorSensorDataUpdatedEventArgs(sensorData.values, sensorData.accuracy));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for magnetometer rotation vector sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for magnetometer rotation vector sensor");
Roll = sensorData.values[2];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
Azimuth = sensorData.values[0];
DataUpdated?.Invoke(this, new OrientationSensorDataUpdatedEventArgs(sensorData.values));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for orientation sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for orientation sensor");
LastStepStatus = (PedometerState)pedoSensorData.values[7];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
StepCount = (uint)sensorData.values[0];
DataUpdated?.Invoke(this, new PedometerDataUpdatedEventArgs(sensorData.values));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for pedometer sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for pedometer sensor");
/// <since_tizen> 3 </since_tizen>
public event EventHandler<PickUpGestureDetectorDataUpdatedEventArgs> DataUpdated;
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
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);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for pick up gesture detector");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for pick up gesture detector");
Pressure = sensorData.values[0];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
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);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for pressure sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for pressure sensor");
Proximity = (ProximitySensorState)sensorData.values[0];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
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);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for proximity sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for proximity sensor");
Accuracy = sensorData.accuracy;
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
X = sensorData.values[0];
DataUpdated?.Invoke(this, new RotationVectorSensorDataUpdatedEventArgs(sensorData.values, sensorData.accuracy));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for rotation vector sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for rotation vector sensor");
/// <since_tizen> 3 </since_tizen>
public event EventHandler<RunningActivityDetectorDataUpdatedEventArgs> DataUpdated;
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
Running = (DetectorState)sensorData.values[0];
DataUpdated?.Invoke(this, new RunningActivityDetectorDataUpdatedEventArgs(sensorData.values[0]));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for running activity detector");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for running activity detector");
SleepState = (SleepMonitorState)sensorData.values[0];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
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);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for sleep monitor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for sleep monitor");
/// <since_tizen> 3 </since_tizen>
public event EventHandler<StationaryActivityDetectorDataUpdatedEventArgs> DataUpdated;
- internal static Interop.SensorListener.SensorEventCallback _callback;
+ internal static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
Stationary = (DetectorState)sensorData.values[0];
DataUpdated?.Invoke(this, new StationaryActivityDetectorDataUpdatedEventArgs(sensorData.values[0]));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for stationary activity detector");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for stationary activity detector");
Temperature = sensorData.values[0];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
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);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for temperature sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for temperature sensor");
UltravioletIndex = sensorData.values[0];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
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);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for ultraviolet sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for ultraviolet sensor");
BiasZ = sensorData.values[5];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
X = sensorData.values[0];
DataUpdated?.Invoke(this, new UncalibratedGyroscopeDataUpdatedEventArgs(sensorData.values));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for uncalibrated gyroscope sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for uncalibrated gyroscope sensor");
BiasZ = sensorData.values[5];
}
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
X = sensorData.values[0];
DataUpdated?.Invoke(this, new UncalibratedMagnetometerDataUpdatedEventArgs(sensorData.values));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for uncalibrated magnetometer sensor");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for uncalibrated magnetometer sensor");
/// <since_tizen> 3 </since_tizen>
public event EventHandler<WalkingActivityDetectorDataUpdatedEventArgs> DataUpdated;
- internal static Interop.SensorListener.SensorEventCallback _callback;
+ internal static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
Walking = (DetectorState)sensorData.values[0];
DataUpdated?.Invoke(this, new WalkingActivityDetectorDataUpdatedEventArgs(sensorData.values[0]));
};
- int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for walking activity detector");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for walking activity detector");
/// <since_tizen> 3 </since_tizen>
public event EventHandler<WristUpGestureDetectorDataUpdatedEventArgs> DataUpdated;
- private static Interop.SensorListener.SensorEventCallback _callback;
+ private static Interop.SensorListener.SensorEventsCallback _callback;
internal override void EventListenStart()
{
- _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
- Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);
+ _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
+ updateBatchEvents(eventPtr, events_count);
+ Interop.SensorEventStruct sensorData = latestEvent();
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);
+ int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error setting event callback for wrist up gesture detector");
internal override void EventListenStop()
{
- int error = Interop.SensorListener.UnsetEventCallback(ListenerHandle);
+ int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle);
if (error != (int)SensorError.None)
{
Log.Error(Globals.LogTag, "Error unsetting event callback for wrist up gesture detector");
using System;
using Tizen.System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
namespace Tizen.Sensor
{
private SensorPausePolicy _pausePolicy = SensorPausePolicy.None;
private IntPtr _sensorHandle = IntPtr.Zero;
private IntPtr _listenerHandle = IntPtr.Zero;
+ private List<Interop.SensorEventStruct> batchedEvents { get; set; } = new List<Interop.SensorEventStruct>();
+
/// <summary>
/// Read a sensor data synchronously.
internal abstract void EventListenStart();
internal abstract void EventListenStop();
+ internal void updateBatchEvents(IntPtr eventsPtr, uint events_count)
+ {
+ if (events_count >= 1)
+ {
+ batchedEvents.Clear();
+ IntPtr currentPtr = eventsPtr;
+ for (int i = 0; i < events_count; i++)
+ {
+ batchedEvents.Add(Interop.IntPtrToEventStruct(currentPtr));
+ currentPtr += Marshal.SizeOf<Interop.SensorEventStruct>();
+ }
+ }
+ }
+
+ internal Interop.SensorEventStruct latestEvent()
+ {
+ if (batchedEvents.Count > 0)
+ {
+ return batchedEvents[batchedEvents.Count-1];
+ }
+ return default(Interop.SensorEventStruct);
+ }
+
internal Sensor(uint index)
{
SensorType type = GetSensorType();