[DllImport(Libraries.Sensor, EntryPoint = "sensor_listener_set_attribute_int")]
internal static extern int SetAttribute(IntPtr listenerHandle, SensorAttribute sensorAttribute, int option);
+
+ [DllImport(Libraries.Sensor, EntryPoint = "sensor_listener_read_data")]
+ internal static extern int ReadData(IntPtr listenerHandle, out SensorEventStruct data);
}
internal static class SensorManager
return count;
}
+ /// <summary>
+ /// Read accelerometer data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading accelerometer data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading accelerometer data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ X = sensorData.values[0];
+ Y = sensorData.values[1];
+ Z = sensorData.values[2];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
}
/// <summary>
+ /// Read face down gesture detector data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading face down gesture detector data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading face down gesture detector data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ FaceDown = (DetectorState)sensorData.values[0];
+ }
+
+ /// <summary>
/// An event handler for storing the callback functions for the event corresponding to the change in the face down gesture detector data.
/// </summary>
/// <since_tizen> 3 </since_tizen>
return count;
}
+ /// <summary>
+ /// Read gravity sensor data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading gravity sensor data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading gravity sensor data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ X = sensorData.values[0];
+ Y = sensorData.values[1];
+ Z = sensorData.values[2];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
return count;
}
+ /// <summary>
+ /// Read gyroscope data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading gyroscope data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading gyroscope data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ X = sensorData.values[0];
+ Y = sensorData.values[1];
+ Z = sensorData.values[2];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
return count;
}
+ /// <summary>
+ /// Read gyroscope rotation vector sensor data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading gyroscope rotation vector sensor data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading gyroscope rotation vector sensor data failed");
+ }
+
+ 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;
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
return count;
}
+ /// <summary>
+ /// Read heart rate monitor data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading heart rate monitor data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading heart rate monitor data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ HeartRate = (int)sensorData.values[0];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
return count;
}
+ /// <summary>
+ /// Read humidity sensor data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading humidity sensor data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading humidity sensor data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Humidity = sensorData.values[0];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
}
/// <summary>
+ /// Read in-vehicle activity detector data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading in-vehicle activity detector data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading in-vehicle activity detector data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ InVehicle = (DetectorState)sensorData.values[0];
+ ActivityAccuracy = (SensorDataAccuracy)sensorData.accuracy;
+ }
+
+ /// <summary>
/// An event handler for storing the callback functions for the event corresponding to the change in the in-vehicle activity detector data.
/// </summary>
/// <since_tizen> 3 </since_tizen>
return count;
}
+ /// <summary>
+ /// Read light sensor data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading light sensor data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading light sensor data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Level = sensorData.values[0];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
return count;
}
+ /// <summary>
+ /// Read linear acceleration sensor data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading linear acceleration sensor data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading linear acceleration sensor data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ X = sensorData.values[0];
+ Y = sensorData.values[1];
+ Z = sensorData.values[2];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
return count;
}
+ /// <summary>
+ /// Read magnetometer data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading magnetometer data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading magnetometer data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ X = sensorData.values[0];
+ Y = sensorData.values[1];
+ Z = sensorData.values[2];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
return count;
}
+ /// <summary>
+ /// Read magnetometer rotation vector sensor data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading magnetometer rotation vector sensor data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading magnetometer rotation vector sensor data failed");
+ }
+
+ 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;
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
return count;
}
+ /// <summary>
+ /// Read orientation sensor data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading orientation sensor data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading orientation sensor data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Azimuth = sensorData.values[0];
+ Pitch = sensorData.values[1];
+ Roll = sensorData.values[2];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
return count;
}
+ /// <summary>
+ /// Read pedometer sensor data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct pedoSensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out pedoSensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading pedometer sensor data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading pedometer sensor data failed");
+ }
+
+ StepCount = (uint)pedoSensorData.values[0];
+ WalkStepCount = (uint)pedoSensorData.values[1];
+ RunStepCount = (uint)pedoSensorData.values[2];
+ MovingDistance = pedoSensorData.values[3];
+ CalorieBurned = pedoSensorData.values[4];
+ LastSpeed = pedoSensorData.values[5];
+ LastSteppingFrequency = pedoSensorData.values[6];
+ LastStepStatus = (PedometerState)pedoSensorData.values[7];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
}
/// <summary>
+ /// Read pick up gesture detector data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading pick up gesture detector data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading pick up gesture detector data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ PickUp = (DetectorState)sensorData.values[0];
+ }
+
+ /// <summary>
/// An event handler for storing the callback functions for the event corresponding to the change in the pick up gesture detector data.
/// </summary>
/// <since_tizen> 3 </since_tizen>
return count;
}
+ /// <summary>
+ /// Read pressure sensor data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading pressure sensor data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading pressure sensor data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Pressure = sensorData.values[0];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
return count;
}
+ /// <summary>
+ /// Read proximity sensor data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading proximity sensor data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading proximity sensor data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Proximity = (ProximitySensorState)sensorData.values[0];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
return count;
}
+ /// <summary>
+ /// Read rotation vector sensor data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading rotation vector sensor data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading rotation vector sensor data failed");
+ }
+
+ 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;
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
}
/// <summary>
+ /// Read running activity detector data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading running activity detector data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading running activity detector data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Running = (DetectorState)sensorData.values[0];
+ ActivityAccuracy = (SensorDataAccuracy)sensorData.accuracy;
+ }
+
+ /// <summary>
/// An event handler for storing the callback functions for the event corresponding to the change in running the activity detector data.
/// </summary>
/// <since_tizen> 3 </since_tizen>
return count;
}
+ /// <summary>
+ /// Read sleep monitor data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading sleep monitor data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading sleep monitor data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ SleepState = (SleepMonitorState)sensorData.values[0];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
}
/// <summary>
+ /// Read stationary activity detector data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading stationary activity detector data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading stationary activity detector data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Stationary = (DetectorState)sensorData.values[0];
+ ActivityAccuracy = (SensorDataAccuracy)sensorData.accuracy;
+ }
+
+ /// <summary>
/// An event handler for storing the callback functions for the event corresponding to the change in the stationary activity detector data.
/// </summary>
/// <since_tizen> 3 </since_tizen>
return count;
}
+ /// <summary>
+ /// Read temperature sensor data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading temperature sensor data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading temperature sensor data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Temperature = sensorData.values[0];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
return count;
}
+ /// <summary>
+ /// Read ultraviolet sensor data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading ultraviolet sensor data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading ultraviolet sensor data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ UltravioletIndex = sensorData.values[0];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
return count;
}
+ /// <summary>
+ /// Read uncalibrated gyroscope data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading uncalibrated gyroscope data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading uncalibrated gyroscope data failed");
+ }
+
+ 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];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
return count;
}
+ /// <summary>
+ /// Read uncalibrated magnetometer data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading uncalibrated magnetometer data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading uncalibrated magnetometer data failed");
+ }
+
+ 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];
+ }
+
private static Interop.SensorListener.SensorEventCallback _callback;
internal override void EventListenStart()
}
/// <summary>
+ /// Read walking activity detector data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading walking activity detector data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading walking activity detector data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ Walking = (DetectorState)sensorData.values[0];
+ ActivityAccuracy = (SensorDataAccuracy)sensorData.accuracy;
+ }
+
+ /// <summary>
/// An event handler for storing the callback functions for the event corresponding to the change in the walking activity gesture detector data.
/// </summary>
/// <since_tizen> 3 </since_tizen>
}
/// <summary>
+ /// Read wrist up gesture detector data synchronously.
+ /// </summary>
+ internal override void ReadData()
+ {
+ Interop.SensorEventStruct sensorData;
+ int error = Interop.SensorListener.ReadData(ListenerHandle, out sensorData);
+ if (error != (int)SensorError.None)
+ {
+ Log.Error(Globals.LogTag, "Error reading wrist up gesture detector data");
+ throw SensorErrorFactory.CheckAndThrowException(error, "Reading wrist up gesture detector data failed");
+ }
+
+ TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
+ WristUp = (DetectorState)sensorData.values[0];
+ }
+
+ /// <summary>
/// An event handler for storing the callback functions for the event corresponding to the change in the wrist up gesture detector data.
/// </summary>
/// <since_tizen> 3 </since_tizen>
private IntPtr _sensorHandle = IntPtr.Zero;
private IntPtr _listenerHandle = IntPtr.Zero;
+ /// <summary>
+ /// Read a sensor data synchronously.
+ /// </summary>
+ internal abstract void ReadData();
internal abstract SensorType GetSensorType();
internal abstract void EventListenStart();
internal abstract void EventListenStop();
Log.Error(Globals.LogTag, "Error starting sensor");
throw SensorErrorFactory.CheckAndThrowException(error, "Unable to Start Sensor Listener");
}
+ ReadData();
EventListenStart();
_isSensing = true;
Log.Info(Globals.LogTag, "Sensor started");