From f6b4b6d43ad76df2aa5fba0aa2a31bf1b0554133 Mon Sep 17 00:00:00 2001 From: MuHong Byun Date: Wed, 22 Apr 2020 11:39:19 +0900 Subject: [PATCH] [Sensor] Add new batched type sensor (#1522) * HeartRateMonitorBatch, HeartRateMonitorLEDGreenBatch Signed-off-by: MuHong Byun --- src/Tizen.Sensor/Interop/Interop.Sensor.cs | 3 + .../Tizen.Sensor/BatchData/BatchData.cs | 42 ++++ .../BatchData/HeartRateMonitorBatchData.cs | 51 +++++ .../BatchData/HeartRateMonitorLEDGreenBatchData.cs | 70 +++++++ src/Tizen.Sensor/Tizen.Sensor/BatchSensor.cs | 49 +++++ .../HeartRateMonitorBatchDataUpdatedEventArgs.cs | 39 ++++ ...RateMonitorLEDGreenBatchDataUpdatedEventArgs.cs | 39 ++++ .../EventArgs/SensorAccuracyChangedEventArgs.cs | 23 ++- .../Tizen.Sensor/Plugins/Accelerometer.cs | 4 +- .../Tizen.Sensor/Plugins/AutoRotationSensor.cs | 8 +- .../Plugins/FaceDownGestureDetector.cs | 4 +- .../Tizen.Sensor/Plugins/GravitySensor.cs | 8 +- src/Tizen.Sensor/Tizen.Sensor/Plugins/Gyroscope.cs | 4 +- .../Plugins/GyroscopeRotationVectorSensor.cs | 4 +- .../Tizen.Sensor/Plugins/HeartRateMonitor.cs | 7 +- .../Tizen.Sensor/Plugins/HeartRateMonitorBatch.cs | 228 ++++++++++++++++++++ .../Plugins/HeartRateMonitorLEDGreenBatch.cs | 230 +++++++++++++++++++++ .../Tizen.Sensor/Plugins/HumiditySensor.cs | 4 +- .../Plugins/InVehicleActivityDetector.cs | 4 +- .../Tizen.Sensor/Plugins/LightSensor.cs | 4 +- .../Plugins/LinearAccelerationSensor.cs | 14 +- .../Tizen.Sensor/Plugins/Magnetometer.cs | 8 +- .../Plugins/MagnetometerRotationVectorSensor.cs | 8 +- .../Tizen.Sensor/Plugins/OrientationSensor.cs | 8 +- src/Tizen.Sensor/Tizen.Sensor/Plugins/Pedometer.cs | 2 +- .../Tizen.Sensor/Plugins/PickUpGestureDetector.cs | 4 +- .../Tizen.Sensor/Plugins/PressureSensor.cs | 4 +- .../Tizen.Sensor/Plugins/ProximitySensor.cs | 4 +- .../Tizen.Sensor/Plugins/RotationVectorSensor.cs | 8 +- .../Plugins/RunningActivityDetector.cs | 4 +- .../Tizen.Sensor/Plugins/SleepMonitor.cs | 4 +- .../Plugins/StationaryActivityDetector.cs | 4 +- .../Tizen.Sensor/Plugins/TemperatureSensor.cs | 4 +- .../Tizen.Sensor/Plugins/UltravioletSensor.cs | 4 +- .../Tizen.Sensor/Plugins/UncalibratedGyroscope.cs | 4 +- .../Plugins/UncalibratedMagnetometer.cs | 8 +- .../Plugins/WalkingActivityDetector.cs | 4 +- .../Tizen.Sensor/Plugins/WristUpGestureDetector.cs | 4 +- src/Tizen.Sensor/Tizen.Sensor/Sensor.cs | 44 +++- .../Tizen.Sensor/SensorEnumerations.cs | 65 +++++- 40 files changed, 947 insertions(+), 87 deletions(-) create mode 100644 src/Tizen.Sensor/Tizen.Sensor/BatchData/BatchData.cs create mode 100644 src/Tizen.Sensor/Tizen.Sensor/BatchData/HeartRateMonitorBatchData.cs create mode 100644 src/Tizen.Sensor/Tizen.Sensor/BatchData/HeartRateMonitorLEDGreenBatchData.cs create mode 100644 src/Tizen.Sensor/Tizen.Sensor/BatchSensor.cs create mode 100644 src/Tizen.Sensor/Tizen.Sensor/EventArgs/HeartRateMonitorBatchDataUpdatedEventArgs.cs create mode 100644 src/Tizen.Sensor/Tizen.Sensor/EventArgs/HeartRateMonitorLEDGreenBatchDataUpdatedEventArgs.cs create mode 100644 src/Tizen.Sensor/Tizen.Sensor/Plugins/HeartRateMonitorBatch.cs create mode 100644 src/Tizen.Sensor/Tizen.Sensor/Plugins/HeartRateMonitorLEDGreenBatch.cs diff --git a/src/Tizen.Sensor/Interop/Interop.Sensor.cs b/src/Tizen.Sensor/Interop/Interop.Sensor.cs index b4d5862..b03adf0 100644 --- a/src/Tizen.Sensor/Interop/Interop.Sensor.cs +++ b/src/Tizen.Sensor/Interop/Interop.Sensor.cs @@ -106,6 +106,9 @@ internal static partial class Interop [DllImport(Libraries.Sensor, EntryPoint = "sensor_listener_read_data")] internal static extern int ReadData(IntPtr listenerHandle, out SensorEventStruct data); + + [DllImport(Libraries.Sensor, EntryPoint = "sensor_listener_read_data_list")] + internal static extern int ReadDataList(IntPtr listenerHandle, out IntPtr eventsData, out uint events_count); } internal static class SensorManager diff --git a/src/Tizen.Sensor/Tizen.Sensor/BatchData/BatchData.cs b/src/Tizen.Sensor/Tizen.Sensor/BatchData/BatchData.cs new file mode 100644 index 0000000..d66e614 --- /dev/null +++ b/src/Tizen.Sensor/Tizen.Sensor/BatchData/BatchData.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tizen.Sensor +{ + /// + /// The BatchData class is used for storing value of particular batch type sensor. + /// + /// 8 + public abstract class BatchData + { + /// + /// Initializes a new instance of the BatchData class. + /// + /// 8 + /// Timestamp of sensor event. + /// Sensor accuracy of sensor event. + public BatchData(ulong timestamp, SensorDataAccuracy accuracy) + { + Timestamp = timestamp; + Accuracy = accuracy; + } + + /// + /// Timestamp as ticks that data was created + /// + /// 8 + /// Timestamp + public ulong Timestamp + { + get; private set; + } + + /// + /// Accuracy of the HeartRateMonitorBatch data. + /// + /// 8 + /// Accuracy + public SensorDataAccuracy Accuracy { get; private set; } = SensorDataAccuracy.Undefined; + } +} diff --git a/src/Tizen.Sensor/Tizen.Sensor/BatchData/HeartRateMonitorBatchData.cs b/src/Tizen.Sensor/Tizen.Sensor/BatchData/HeartRateMonitorBatchData.cs new file mode 100644 index 0000000..02f11e2 --- /dev/null +++ b/src/Tizen.Sensor/Tizen.Sensor/BatchData/HeartRateMonitorBatchData.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tizen.Sensor +{ + /// + /// The HeartRateMonitorBatchData class is used for storing value of HeartRateMonitorBatch sensor. + /// + /// 8 + public class HeartRateMonitorBatchData : BatchData + { + /// + /// Initializes a new instance of the HeartRateMonitorBatchData class. + /// + /// 8 + /// Timestamp of HeartRateMonitorBatch sensor event. + /// Sensor accuracy of HeartRateMonitorBatch sensor event. + /// Value indicating the status of the HeartRateMonitorBatch sensor. + /// heartRate of HeartRateMonitorBatch sensor event. + /// rri of HeartRateMonitorBatch sensor event. + public HeartRateMonitorBatchData(ulong timestamp, SensorDataAccuracy accuracy, HeartRateMonitorBatchState state, int heartRate, int rri) : base(timestamp, accuracy) + { + State = state; + HeartRate = heartRate; + RRInterval = rri; + } + + /// + /// Gets the value of the HeartRateMonitorBatch state. + /// + /// 8 + /// State + public HeartRateMonitorBatchState State { get; } + + /// + /// Heart rate in beats per minute + /// + /// 8 + /// HeartRate + public int HeartRate { get; } + + /// + /// Gets the value R wave-to-R wave interval(RRI) from ECG sensor(Unit is millisecond). + /// + /// 8 + /// RRInterval + public int RRInterval { get; } + + } +} diff --git a/src/Tizen.Sensor/Tizen.Sensor/BatchData/HeartRateMonitorLEDGreenBatchData.cs b/src/Tizen.Sensor/Tizen.Sensor/BatchData/HeartRateMonitorLEDGreenBatchData.cs new file mode 100644 index 0000000..3efa1cf --- /dev/null +++ b/src/Tizen.Sensor/Tizen.Sensor/BatchData/HeartRateMonitorLEDGreenBatchData.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tizen.Sensor +{ + /// + /// The HeartRateMonitorLEDGreenBatchData class is used for storing value of HeartRateMonitorLEDGreenBatch sensor. + /// + /// 8 + public class HeartRateMonitorLEDGreenBatchData : BatchData + { + /// + /// Initializes a new instance of the HeartRateMonitorLEDGreenBatchData class. + /// + /// 8 + /// Timestamp of sensor event. + /// Sensor accuracy of sensor event. + /// Green LED ADC value of sensor event + /// X axis's value of gravitational acceleration of sensor event. + /// Y axis's value of gravitational acceleration of sensor event. + /// Z axis's value of gravitational acceleration of sensor event. + /// Sequential index of sensor event. + public HeartRateMonitorLEDGreenBatchData(ulong timestamp, SensorDataAccuracy accuracy, uint green, int accelerationX, int accelerationY, int accelerationZ, uint index) : base(timestamp, accuracy) + { + Green = green; + AccelerationX = accelerationX; + AccelerationY = accelerationY; + AccelerationY = accelerationZ; + Index = index; + } + + /// + /// Gets the value of the Green LED ADC Value. (0 ~ 4194304) + /// + /// 8 + /// Green + public uint Green { get; } + + /// + /// Gets the X axis's uncalibrated value of the gravitational acceleration. (-4096 ~ 4096) + /// + /// 8 + /// AccelerationX + public int AccelerationX { get; } + + /// + /// Gets the Y axis's uncalibrated value of the gravitational acceleration. (-4096 ~ 4096) + /// + /// 8 + /// AccelerationY + public int AccelerationY { get; } + + + /// + /// Gets the Z axis's uncalibrated value of the gravitational acceleration. (-4096 ~ 4096) + /// + /// 8 + /// AccelerationZ + public int AccelerationZ { get; } + + + /// + /// Gets the index value between 0 and 299 used for deburring purposes + /// + /// 8 + /// Index + public uint Index { get; } + } +} diff --git a/src/Tizen.Sensor/Tizen.Sensor/BatchSensor.cs b/src/Tizen.Sensor/Tizen.Sensor/BatchSensor.cs new file mode 100644 index 0000000..8e86d7a --- /dev/null +++ b/src/Tizen.Sensor/Tizen.Sensor/BatchSensor.cs @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System; +using System.Collections.Generic; + +namespace Tizen.Sensor +{ + public abstract class BatchSensor : Sensor where TData : Tizen.Sensor.BatchData + { + public BatchSensor(uint index = 0) : base(index) { } + public IReadOnlyList Data { get; protected set; } + + /// + /// Convert general batch data to specific batch data + /// + /// 8 + /// List of converted specific batch data + protected abstract IReadOnlyList ConvertBatchData(); + + /// + /// Update the internal batch data using the latest events + /// + /// + /// General batch data's raw pointer + /// + /// + /// Number of general batch events + /// + protected void UpdateBatchData(IntPtr eventsPtr, uint eventsCount) + { + updateBatchEvents(eventsPtr, eventsCount); + Data = ConvertBatchData(); + } + } +} diff --git a/src/Tizen.Sensor/Tizen.Sensor/EventArgs/HeartRateMonitorBatchDataUpdatedEventArgs.cs b/src/Tizen.Sensor/Tizen.Sensor/EventArgs/HeartRateMonitorBatchDataUpdatedEventArgs.cs new file mode 100644 index 0000000..939a150 --- /dev/null +++ b/src/Tizen.Sensor/Tizen.Sensor/EventArgs/HeartRateMonitorBatchDataUpdatedEventArgs.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System; +using System.Collections.Generic; + +namespace Tizen.Sensor +{ + /// + /// The HeartRateMonitorBatch changed event arguments class is used for storing the data returned by the HeartRateMonitorBatch sensor. + /// + /// 8 + public class HeartRateMonitorBatchDataUpdatedEventArgs : EventArgs + { + internal HeartRateMonitorBatchDataUpdatedEventArgs(IReadOnlyList batchedData) + { + Data = batchedData; + } + /// + /// Gets the series value of the HeartRateMonitorBatch. + /// + /// 8 + /// HeartRateMonitorBatchData. + public IReadOnlyList Data { get; } + } +} \ No newline at end of file diff --git a/src/Tizen.Sensor/Tizen.Sensor/EventArgs/HeartRateMonitorLEDGreenBatchDataUpdatedEventArgs.cs b/src/Tizen.Sensor/Tizen.Sensor/EventArgs/HeartRateMonitorLEDGreenBatchDataUpdatedEventArgs.cs new file mode 100644 index 0000000..15cab72 --- /dev/null +++ b/src/Tizen.Sensor/Tizen.Sensor/EventArgs/HeartRateMonitorLEDGreenBatchDataUpdatedEventArgs.cs @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System; +using System.Collections.Generic; + +namespace Tizen.Sensor +{ + /// + /// The HeartRateMonitorLEDGreenBatch changed event arguments class is used for storing the data returned by the HeartRateMonitorLEDGreenBatch sensor + /// + /// 8 + public class HeartRateMonitorLEDGreenBatchDataUpdatedEventArgs : EventArgs + { + internal HeartRateMonitorLEDGreenBatchDataUpdatedEventArgs(IReadOnlyList batchedDataList) + { + Data = batchedDataList; + } + /// + /// Gets the series value of the HeartRateMonitorLEDGreenBatch. + /// + /// 8 + /// HeartRateMonitorLEDGreenBatchData. + public IReadOnlyList Data { get; } + } +} \ No newline at end of file diff --git a/src/Tizen.Sensor/Tizen.Sensor/EventArgs/SensorAccuracyChangedEventArgs.cs b/src/Tizen.Sensor/Tizen.Sensor/EventArgs/SensorAccuracyChangedEventArgs.cs index a6a401a..e4061ba 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/EventArgs/SensorAccuracyChangedEventArgs.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/EventArgs/SensorAccuracyChangedEventArgs.cs @@ -26,7 +26,13 @@ namespace Tizen.Sensor { internal SensorAccuracyChangedEventArgs(TimeSpan timespan, SensorDataAccuracy accuracy) { - TimeSpan = timespan; + Accuracy = accuracy; + Timestamp = (ulong)timespan.Ticks; + } + + internal SensorAccuracyChangedEventArgs(ulong timestamp, SensorDataAccuracy accuracy) + { + Timestamp = timestamp; Accuracy = accuracy; } @@ -35,7 +41,20 @@ namespace Tizen.Sensor /// /// 3 /// The time span. - public TimeSpan TimeSpan { get; private set; } + public TimeSpan TimeSpan + { + get + { + return new TimeSpan((Int64)Timestamp); + } + } + + /// + /// Gets the time stamp. + /// + /// 8 + /// Timestamp + public ulong Timestamp { get; private set; } /// /// Gets the accuracy. diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/Accelerometer.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/Accelerometer.cs index d6c053a..d60f83c 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/Accelerometer.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/Accelerometer.cs @@ -130,7 +130,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading accelerometer data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -143,7 +143,7 @@ namespace Tizen.Sensor _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => { updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/AutoRotationSensor.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/AutoRotationSensor.cs index 9de5051..c2e2221 100644 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/AutoRotationSensor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/AutoRotationSensor.cs @@ -138,7 +138,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading auto rotation data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; if (sensorData.values[0] == 0) { Rotation = AutoRotationState.Degree_0; } else { @@ -155,7 +155,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; if (sensorData.values[0] == 0) { Rotation = AutoRotationState.Degree_0; } else { @@ -189,9 +189,9 @@ namespace Tizen.Sensor private void AccuracyListenStart() { _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => { - TimeSpan = new TimeSpan((Int64)timestamp); + Timestamp = timestamp; Accuracy = accuracy; - _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy)); + _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(timestamp, accuracy)); }; int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, _accuracyCallback, IntPtr.Zero); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/FaceDownGestureDetector.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/FaceDownGestureDetector.cs index c21440f..8cdf940 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/FaceDownGestureDetector.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/FaceDownGestureDetector.cs @@ -110,7 +110,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading face down gesture detector data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; FaceDown = (DetectorState)sensorData.values[0]; } @@ -128,7 +128,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; FaceDown = (DetectorState) sensorData.values[0]; DataUpdated?.Invoke(this, new FaceDownGestureDetectorDataUpdatedEventArgs(sensorData.values[0])); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/GravitySensor.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/GravitySensor.cs index 3d7fbf6..f3e4f23 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/GravitySensor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/GravitySensor.cs @@ -156,7 +156,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading gravity sensor data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -170,7 +170,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -201,8 +201,8 @@ namespace Tizen.Sensor private void AccuracyListenStart() { _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => { - TimeSpan = new TimeSpan((Int64)timestamp); - _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy)); + Timestamp = timestamp; + _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(timestamp, accuracy)); }; int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, _accuracyCallback, IntPtr.Zero); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/Gyroscope.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/Gyroscope.cs index 167d478..4730feb 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/Gyroscope.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/Gyroscope.cs @@ -131,7 +131,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading gyroscope data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -145,7 +145,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/GyroscopeRotationVectorSensor.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/GyroscopeRotationVectorSensor.cs index 4412c13..21738e2 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/GyroscopeRotationVectorSensor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/GyroscopeRotationVectorSensor.cs @@ -145,7 +145,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading gyroscope rotation vector sensor data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -161,7 +161,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/HeartRateMonitor.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/HeartRateMonitor.cs index 7170ce0..b26ea9c 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/HeartRateMonitor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/HeartRateMonitor.cs @@ -119,7 +119,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading heart rate monitor data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; HeartRate = (int)sensorData.values[0]; } @@ -127,11 +127,12 @@ namespace Tizen.Sensor internal override void EventListenStart() { - _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => { + _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => + { updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; HeartRate = (int)sensorData.values[0]; DataUpdated?.Invoke(this, new HeartRateMonitorDataUpdatedEventArgs((int)sensorData.values[0])); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/HeartRateMonitorBatch.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/HeartRateMonitorBatch.cs new file mode 100644 index 0000000..8568874 --- /dev/null +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/HeartRateMonitorBatch.cs @@ -0,0 +1,228 @@ +/* + * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System; +using System.Collections.Generic; +using System.ComponentModel; + +namespace Tizen.Sensor +{ + /// + /// The HeartRateMonitorBatch class is used for registering callbacks for the heart rate monitor batch and getting the heart rate batch data. + /// + /// 8 + public sealed class HeartRateMonitorBatch : BatchSensor + { + private static string HRMBatchKey = "http://tizen.org/feature/sensor.heart_rate_monitor.batch"; + + private event EventHandler _accuracyChanged; + + protected override IReadOnlyList ConvertBatchData() + { + List list = new List(); + Interop.SensorEventStruct sensorData; + for (int i = 0; i < BatchedEvents.Count; i++) + { + sensorData = BatchedEvents[i]; + list.Add(new HeartRateMonitorBatchData(sensorData.timestamp, sensorData.accuracy, (HeartRateMonitorBatchState)sensorData.values[0], (int)sensorData.values[1], (int)sensorData.values[2])); + } + return list.AsReadOnly(); + } + + /// + /// Gets the accuracy of the HeartRateMonitorBatch data. + /// + /// 8 + /// Accuracy + public SensorDataAccuracy Accuracy { get; private set; } = SensorDataAccuracy.Undefined; + + /// + /// Returns true or false based on whether the HeartRateMonitorBatch sensor is supported by the device. + /// + /// 8 + /// true if supported; otherwise false. + public static bool IsSupported + { + get + { + Log.Info(Globals.LogTag, "Checking if the HeartRateMonitorBatch is supported"); + return CheckIfSupported(SensorType.HRMBatch, HRMBatchKey); + } + } + + /// + /// Returns the number of HeartRateMonitorBatch sensors available on the device. + /// + /// 8 + /// The count of HeartRateMonitorBatch sensors. + /// Thrown when the operation is invalid for the current state. + public static int Count + { + get + { + Log.Info(Globals.LogTag, "Getting the count of accelerometer sensors"); + return GetCount(); + } + } + + /// + /// Initializes a new instance of the class. + /// + /// 8 + /// http://tizen.org/privilege/healthinfo + /// public + /// http://tizen.org/feature/sensor.heart_rate_monitor.batch + /// Thrown when an invalid argument is used. + /// Thrown when the sensor is not supported. + /// Thrown when the application has no privilege to use the sensor. + /// Thrown when the operation is invalid for the current state. + /// + /// Index. Default value for this is 0. Index refers to a particular HeartRateMonitorBatch in case of multiple sensors. + /// + public HeartRateMonitorBatch(uint index = 0) : base(index) + { + Log.Info(Globals.LogTag, "Creating HeartRateMonitorBatch object"); + } + + internal override SensorType GetSensorType() + { + return SensorType.HRMBatch; + } + + /// + /// An event handler for storing the callback functions for the event corresponding to the change in the HeartRateMonitorBatch data. + /// + /// 8 + + public event EventHandler DataUpdated; + + /// + /// An event handler for accuracy changed events. + /// + /// 8 + public event EventHandler AccuracyChanged + { + add + { + if (_accuracyChanged == null) + { + AccuracyListenStart(); + } + _accuracyChanged += value; + } + remove + { + _accuracyChanged -= value; + if (_accuracyChanged == null) + { + AccuracyListenStop(); + } + } + } + + private static int GetCount() + { + IntPtr list; + int count; + int error = Interop.SensorManager.GetSensorList(SensorType.HRMBatch, out list, out count); + if (error != (int)SensorError.None) + { + Log.Error(Globals.LogTag, "Error getting sensor list for HeartRateMonitorBatch"); + count = 0; + } + else + Interop.Libc.Free(list); + return count; + } + + /// + /// Read HeartRateMonitorBatch data synchronously. + /// + internal override void ReadData() + { + int error = Interop.SensorListener.ReadDataList(ListenerHandle, out IntPtr eventsPtr, out uint events_count); + if (error != (int)SensorError.None) + { + Log.Error(Globals.LogTag, "Error reading HeartRateMonitorBatch data"); + throw SensorErrorFactory.CheckAndThrowException(error, "Reading HeartRateMonitorBatch data failed"); + } + UpdateBatchData(eventsPtr, events_count); + Interop.SensorEventStruct sensorData = latestEvent(); + Timestamp = (ulong)DateTimeOffset.Now.ToUnixTimeMilliseconds(); + Accuracy = sensorData.accuracy; + Interop.Libc.Free(eventsPtr); + } + + private static Interop.SensorListener.SensorEventsCallback _callback; + + internal override void EventListenStart() + { + _callback = (IntPtr sensorHandle, IntPtr eventsPtr, uint events_count, IntPtr data) => + { + UpdateBatchData(eventsPtr, events_count); + Interop.SensorEventStruct sensorData = latestEvent(); + Timestamp = (ulong)DateTimeOffset.Now.ToUnixTimeMilliseconds(); + Accuracy = sensorData.accuracy; + DataUpdated?.Invoke(this, new HeartRateMonitorBatchDataUpdatedEventArgs((IReadOnlyList)Data)); + }; + int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero); + if (error != (int)SensorError.None) + { + Log.Error(Globals.LogTag, "Error setting event callback for HeartRateMonitorBatch sensor"); + throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for HeartRateMonitorBatch"); + } + } + + internal override void EventListenStop() + { + int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle); + if (error != (int)SensorError.None) + { + Log.Error(Globals.LogTag, "Error unsetting event callback for HeartRateMonitorBatch sensor"); + throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for HeartRateMonitorBatch"); + } + } + + private static Interop.SensorListener.SensorAccuracyCallback _accuracyCallback; + + private void AccuracyListenStart() + { + _accuracyCallback = (IntPtr sensorHandle, ulong timestamp, SensorDataAccuracy accuracy, IntPtr data) => + { + Timestamp = timestamp; + Accuracy = accuracy; + _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(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 HeartRateMonitorBatch sensor"); + throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set accuracy event callback for HeartRateMonitorBatch"); + } + } + + private void AccuracyListenStop() + { + int error = Interop.SensorListener.UnsetAccuracyCallback(ListenerHandle); + if (error != (int)SensorError.None) + { + Log.Error(Globals.LogTag, "Error unsetting accuracy event callback for HeartRateMonitorBatch sensor"); + throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset accuracy event callback for auto rotation"); + } + } + } +} diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/HeartRateMonitorLEDGreenBatch.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/HeartRateMonitorLEDGreenBatch.cs new file mode 100644 index 0000000..f5a3a28 --- /dev/null +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/HeartRateMonitorLEDGreenBatch.cs @@ -0,0 +1,230 @@ +/* + * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System; +using System.Collections.Generic; +using System.ComponentModel; + +namespace Tizen.Sensor +{ + /// + /// The HeartRateMonitorLEDGreenBatch class is used for registering callbacks for the HRMLEDGreen batch and getting the HRMLEDGreen batch data. + /// + /// 8 + public sealed class HeartRateMonitorLEDGreenBatch : BatchSensor + { + private static string HRMLEDGreenBatchKey = "http://tizen.org/feature/sensor.heart_rate_monitor.led_green.batch"; + + private event EventHandler _accuracyChanged; + + protected override IReadOnlyList ConvertBatchData() + { + List list = new List(); + Interop.SensorEventStruct sensorData; + for (int i = 0; i < BatchedEvents.Count; i++) + { + sensorData = BatchedEvents[i]; + list.Add(new HeartRateMonitorLEDGreenBatchData(sensorData.timestamp, sensorData.accuracy, (uint)sensorData.values[0], (int)sensorData.values[1], (int)sensorData.values[2], (int)sensorData.values[3], (uint)sensorData.values[4])); + } + return list.AsReadOnly(); ; + } + + /// + /// Gets the accuracy of the auto HeartRateMonitorLEDGreenBatch data. + /// + /// 8 + /// Accuracy + public SensorDataAccuracy Accuracy { get; private set; } = SensorDataAccuracy.Undefined; + + /// + /// Returns true or false based on whether the HeartRateMonitorLEDGreenBatch sensor is supported by the device. + /// + /// 8 + /// true if supported; otherwise false. + public static bool IsSupported + { + get + { + Log.Info(Globals.LogTag, "Checking if the HeartRateMonitorLEDGreenBatch is supported"); + return CheckIfSupported(SensorType.HRMLEDGreenBatch, HRMLEDGreenBatchKey); + } + } + + /// + /// Returns the number of HeartRateMonitorLEDGreenBatch sensors available on the device. + /// + /// 8 + /// The count of HeartRateMonitorLEDGreenBatch sensors. + /// Thrown when the operation is invalid for the current state. + public static int Count + { + get + { + Log.Info(Globals.LogTag, "Getting the count of accelerometer sensors"); + return GetCount(); + } + } + + /// + /// Initializes a new instance of the class. + /// + /// 8 + /// http://tizen.org/privilege/healthinfo + /// public + /// http://tizen.org/feature/sensor.heart_rate_monitor.led_green.batch + /// Thrown when an invalid argument is used. + /// Thrown when the sensor is not supported. + /// Thrown when the application has no privilege to use the sensor. + /// Thrown when the operation is invalid for the current state. + /// + /// Index. Default value for this is 0. Index refers to a particular HeartRateMonitorLEDGreenBatch sensor in case of multiple sensors. + /// + public HeartRateMonitorLEDGreenBatch(uint index = 0) : base(index) + { + Log.Info(Globals.LogTag, "Creating HeartRateMonitorLEDGreenBatch object"); + } + + internal override SensorType GetSensorType() + { + return SensorType.HRMLEDGreenBatch; + } + + /// + /// An event handler for storing the callback functions for the event corresponding to the change in the HeartRateMonitorLEDGreenBatch sensor data. + /// + /// 8 + + public event EventHandler DataUpdated; + + /// + /// An event handler for accuracy changed events. + /// + /// 8 + public event EventHandler AccuracyChanged + { + add + { + if (_accuracyChanged == null) + { + AccuracyListenStart(); + } + _accuracyChanged += value; + } + remove + { + _accuracyChanged -= value; + if (_accuracyChanged == null) + { + AccuracyListenStop(); + } + } + } + + private static int GetCount() + { + IntPtr list; + int count; + int error = Interop.SensorManager.GetSensorList(SensorType.HRMLEDGreenBatch, out list, out count); + if (error != (int)SensorError.None) + { + Log.Error(Globals.LogTag, "Error getting sensor list for HeartRateMonitorLEDGreenBatch"); + count = 0; + } + else + Interop.Libc.Free(list); + return count; + } + + /// + /// Read HeartRateMonitorLEDGreenBatch data synchronously. + /// + internal override void ReadData() + { + int error = Interop.SensorListener.ReadDataList(ListenerHandle, out IntPtr eventsPtr, out uint events_count); + if (error != (int)SensorError.None) + { + Log.Error(Globals.LogTag, "Error reading HeartRateMonitorLEDGreenBatch data"); + throw SensorErrorFactory.CheckAndThrowException(error, "Reading HeartRateMonitorBatch data failed"); + } + UpdateBatchData(eventsPtr, events_count); + Interop.SensorEventStruct sensorData = latestEvent(); + Timestamp = sensorData.timestamp; + Accuracy = sensorData.accuracy; + Interop.Libc.Free(eventsPtr); + } + + private static Interop.SensorListener.SensorEventsCallback _callback; + + internal override void EventListenStart() + { + _callback = (IntPtr sensorHandle, IntPtr eventsPtr, uint events_count, IntPtr data) => + { + UpdateBatchData(eventsPtr, events_count); + Interop.SensorEventStruct sensorData = latestEvent(); + Timestamp = (ulong)DateTimeOffset.Now.ToUnixTimeMilliseconds(); + Accuracy = sensorData.accuracy; + DataUpdated?.Invoke(this, new HeartRateMonitorLEDGreenBatchDataUpdatedEventArgs((IReadOnlyList)Data)); + + }; + + int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero); + if (error != (int)SensorError.None) + { + Log.Error(Globals.LogTag, "Error setting event callback for HeartRateMonitorLEDGreenBatch sensor"); + throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for HeartRateMonitorLEDGreenBatch"); + } + } + + internal override void EventListenStop() + { + int error = Interop.SensorListener.UnsetEventsCallback(ListenerHandle); + if (error != (int)SensorError.None) + { + Log.Error(Globals.LogTag, "Error unsetting event callback for HeartRateMonitorLEDGreenBatch sensor"); + throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset event callback for HeartRateMonitorLEDGreenBatch"); + } + } + + private static Interop.SensorListener.SensorAccuracyCallback _accuracyCallback; + + private void AccuracyListenStart() + { + _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => + { + Timestamp = timestamp; + Accuracy = accuracy; + _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(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 HeartRateMonitorLEDGreenBatch sensor"); + throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set accuracy event callback for HeartRateMonitorLEDGreenBatch"); + } + } + + private void AccuracyListenStop() + { + int error = Interop.SensorListener.UnsetAccuracyCallback(ListenerHandle); + if (error != (int)SensorError.None) + { + Log.Error(Globals.LogTag, "Error unsetting accuracy event callback for HeartRateMonitorLEDGreenBatch sensor"); + throw SensorErrorFactory.CheckAndThrowException(error, "Unable to unset accuracy event callback for HeartRateMonitorLEDGreenBatch"); + } + } + } +} diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/HumiditySensor.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/HumiditySensor.cs index 24247b2..b18c7bb 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/HumiditySensor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/HumiditySensor.cs @@ -117,7 +117,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading humidity sensor data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Humidity = sensorData.values[0]; } @@ -129,7 +129,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Humidity = sensorData.values[0]; DataUpdated?.Invoke(this, new HumiditySensorDataUpdatedEventArgs(sensorData.values[0])); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/InVehicleActivityDetector.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/InVehicleActivityDetector.cs index 58955f0..389c47d 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/InVehicleActivityDetector.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/InVehicleActivityDetector.cs @@ -106,7 +106,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading in-vehicle activity detector data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; InVehicle = (DetectorState)sensorData.values[0]; ActivityAccuracy = (SensorDataAccuracy)sensorData.accuracy; } @@ -125,7 +125,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; InVehicle = (DetectorState)sensorData.values[0]; ActivityAccuracy = (SensorDataAccuracy) sensorData.accuracy; diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/LightSensor.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/LightSensor.cs index 9458ace..9a11d2a 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/LightSensor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/LightSensor.cs @@ -117,7 +117,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading light sensor data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Level = sensorData.values[0]; } @@ -129,7 +129,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Level = sensorData.values[0]; DataUpdated?.Invoke(this, new LightSensorDataUpdatedEventArgs(sensorData.values[0])); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/LinearAccelerationSensor.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/LinearAccelerationSensor.cs index b41965c..2a2d80c 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/LinearAccelerationSensor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/LinearAccelerationSensor.cs @@ -156,7 +156,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading linear acceleration sensor data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -166,11 +166,12 @@ namespace Tizen.Sensor internal override void EventListenStart() { - _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => { + _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => + { updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -200,9 +201,10 @@ namespace Tizen.Sensor private void AccuracyListenStart() { - _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => { - TimeSpan = new TimeSpan((Int64)timestamp); - _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy)); + _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => + { + Timestamp = timestamp; + _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(timestamp, accuracy)); }; int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, _accuracyCallback, IntPtr.Zero); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/Magnetometer.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/Magnetometer.cs index 8782d57..0e47cec 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/Magnetometer.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/Magnetometer.cs @@ -156,7 +156,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading magnetometer data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -170,7 +170,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -201,8 +201,8 @@ namespace Tizen.Sensor private void AccuracyListenStart() { _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => { - TimeSpan = new TimeSpan((Int64)timestamp); - _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy)); + Timestamp = timestamp; + _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(timestamp, accuracy)); }; int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, _accuracyCallback, IntPtr.Zero); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/MagnetometerRotationVectorSensor.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/MagnetometerRotationVectorSensor.cs index 97d45f4..8813bd2 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/MagnetometerRotationVectorSensor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/MagnetometerRotationVectorSensor.cs @@ -182,7 +182,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading magnetometer rotation vector sensor data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -198,7 +198,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -231,9 +231,9 @@ namespace Tizen.Sensor private void AccuracyListenStart() { _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => { - TimeSpan = new TimeSpan((Int64)timestamp); + Timestamp = timestamp; Accuracy = accuracy; - _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy)); + _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(timestamp, accuracy)); }; int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, _accuracyCallback, IntPtr.Zero); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/OrientationSensor.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/OrientationSensor.cs index 6293574..0a221a0 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/OrientationSensor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/OrientationSensor.cs @@ -156,7 +156,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading orientation sensor data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Azimuth = sensorData.values[0]; Pitch = sensorData.values[1]; Roll = sensorData.values[2]; @@ -170,7 +170,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Azimuth = sensorData.values[0]; Pitch = sensorData.values[1]; Roll = sensorData.values[2]; @@ -201,8 +201,8 @@ namespace Tizen.Sensor private void AccuracyListenStart() { _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => { - TimeSpan = new TimeSpan((Int64)timestamp); - _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy)); + Timestamp = timestamp; + _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(timestamp, accuracy)); }; int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, _accuracyCallback, IntPtr.Zero); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/Pedometer.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/Pedometer.cs index 0481ca0..a6e8190 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/Pedometer.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/Pedometer.cs @@ -187,7 +187,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; StepCount = (uint)sensorData.values[0]; WalkStepCount = (uint)sensorData.values[1]; RunStepCount = (uint)sensorData.values[2]; diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/PickUpGestureDetector.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/PickUpGestureDetector.cs index 418bec3..e6c9b73 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/PickUpGestureDetector.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/PickUpGestureDetector.cs @@ -122,7 +122,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading pick up gesture detector data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; PickUp = (DetectorState)sensorData.values[0]; } @@ -140,7 +140,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; PickUp = (DetectorState) sensorData.values[0]; DataUpdated?.Invoke(this, new PickUpGestureDetectorDataUpdatedEventArgs(sensorData.values[0])); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/PressureSensor.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/PressureSensor.cs index 295609e..80a1838 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/PressureSensor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/PressureSensor.cs @@ -118,7 +118,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading pressure sensor data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Pressure = sensorData.values[0]; } @@ -130,7 +130,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Pressure = sensorData.values[0]; DataUpdated?.Invoke(this, new PressureSensorDataUpdatedEventArgs(sensorData.values[0])); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/ProximitySensor.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/ProximitySensor.cs index fd4205a..e1e4aa3 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/ProximitySensor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/ProximitySensor.cs @@ -117,7 +117,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading proximity sensor data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Proximity = (ProximitySensorState)sensorData.values[0]; } @@ -129,7 +129,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Proximity = (ProximitySensorState) sensorData.values[0]; DataUpdated?.Invoke(this, new ProximitySensorDataUpdatedEventArgs(sensorData.values[0])); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/RotationVectorSensor.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/RotationVectorSensor.cs index cac4716..209cc33 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/RotationVectorSensor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/RotationVectorSensor.cs @@ -170,7 +170,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading rotation vector sensor data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -186,7 +186,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -219,9 +219,9 @@ namespace Tizen.Sensor private void AccuracyListenStart() { _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => { - TimeSpan = new TimeSpan((Int64)timestamp); + Timestamp = timestamp; Accuracy = accuracy; - _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy)); + _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(timestamp, accuracy)); }; int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, _accuracyCallback, IntPtr.Zero); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/RunningActivityDetector.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/RunningActivityDetector.cs index 3778331..d42a2cb 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/RunningActivityDetector.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/RunningActivityDetector.cs @@ -106,7 +106,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading running activity detector data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Running = (DetectorState)sensorData.values[0]; ActivityAccuracy = (SensorDataAccuracy)sensorData.accuracy; } @@ -125,7 +125,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Running = (DetectorState)sensorData.values[0]; ActivityAccuracy = (SensorDataAccuracy) sensorData.accuracy; diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/SleepMonitor.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/SleepMonitor.cs index cc15999..bdeb27e 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/SleepMonitor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/SleepMonitor.cs @@ -121,7 +121,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading sleep monitor data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; SleepState = (SleepMonitorState)sensorData.values[0]; } @@ -133,7 +133,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; SleepState = (SleepMonitorState)sensorData.values[0]; DataUpdated?.Invoke(this, new SleepMonitorDataUpdatedEventArgs((int)sensorData.values[0])); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/StationaryActivityDetector.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/StationaryActivityDetector.cs index 00ad3ef..d723062 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/StationaryActivityDetector.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/StationaryActivityDetector.cs @@ -106,7 +106,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading stationary activity detector data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Stationary = (DetectorState)sensorData.values[0]; ActivityAccuracy = (SensorDataAccuracy)sensorData.accuracy; } @@ -125,7 +125,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Stationary = (DetectorState)sensorData.values[0]; ActivityAccuracy = (SensorDataAccuracy) sensorData.accuracy; diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/TemperatureSensor.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/TemperatureSensor.cs index 2ced599..d9a1df9 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/TemperatureSensor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/TemperatureSensor.cs @@ -118,7 +118,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading temperature sensor data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Temperature = sensorData.values[0]; } @@ -130,7 +130,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Temperature = sensorData.values[0]; DataUpdated?.Invoke(this, new TemperatureSensorDataUpdatedEventArgs(sensorData.values[0])); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/UltravioletSensor.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/UltravioletSensor.cs index 2a86228..53bfb10 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/UltravioletSensor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/UltravioletSensor.cs @@ -118,7 +118,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading ultraviolet sensor data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; UltravioletIndex = sensorData.values[0]; } @@ -130,7 +130,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; UltravioletIndex = sensorData.values[0]; DataUpdated?.Invoke(this, new UltravioletSensorDataUpdatedEventArgs(sensorData.values[0])); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/UncalibratedGyroscope.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/UncalibratedGyroscope.cs index f459eac..33c9b12 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/UncalibratedGyroscope.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/UncalibratedGyroscope.cs @@ -152,7 +152,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading uncalibrated gyroscope data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -169,7 +169,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/UncalibratedMagnetometer.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/UncalibratedMagnetometer.cs index 6152992..ee1927d 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/UncalibratedMagnetometer.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/UncalibratedMagnetometer.cs @@ -177,7 +177,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading uncalibrated magnetometer data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -194,7 +194,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; X = sensorData.values[0]; Y = sensorData.values[1]; Z = sensorData.values[2]; @@ -228,8 +228,8 @@ namespace Tizen.Sensor private void AccuracyListenStart() { _accuracyCallback = (IntPtr sensorHandle, UInt64 timestamp, SensorDataAccuracy accuracy, IntPtr data) => { - TimeSpan = new TimeSpan((Int64)timestamp); - _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(new TimeSpan((Int64)timestamp), accuracy)); + Timestamp = timestamp; + _accuracyChanged?.Invoke(this, new SensorAccuracyChangedEventArgs(timestamp, accuracy)); }; int error = Interop.SensorListener.SetAccuracyCallback(ListenerHandle, _accuracyCallback, IntPtr.Zero); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/WalkingActivityDetector.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/WalkingActivityDetector.cs index 116f712..a7ecb61 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/WalkingActivityDetector.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/WalkingActivityDetector.cs @@ -106,7 +106,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading walking activity detector data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Walking = (DetectorState)sensorData.values[0]; ActivityAccuracy = (SensorDataAccuracy)sensorData.accuracy; } @@ -125,7 +125,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; Walking = (DetectorState)sensorData.values[0]; ActivityAccuracy = (SensorDataAccuracy) sensorData.accuracy; diff --git a/src/Tizen.Sensor/Tizen.Sensor/Plugins/WristUpGestureDetector.cs b/src/Tizen.Sensor/Tizen.Sensor/Plugins/WristUpGestureDetector.cs index 6ff7e47..1e4966f 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Plugins/WristUpGestureDetector.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Plugins/WristUpGestureDetector.cs @@ -110,7 +110,7 @@ namespace Tizen.Sensor throw SensorErrorFactory.CheckAndThrowException(error, "Reading wrist up gesture detector data failed"); } - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; WristUp = (DetectorState)sensorData.values[0]; } @@ -128,7 +128,7 @@ namespace Tizen.Sensor updateBatchEvents(eventPtr, events_count); Interop.SensorEventStruct sensorData = latestEvent(); - TimeSpan = new TimeSpan((Int64)sensorData.timestamp); + Timestamp = sensorData.timestamp; WristUp = (DetectorState) sensorData.values[0]; DataUpdated?.Invoke(this, new WristUpGestureDetectorDataUpdatedEventArgs(sensorData.values[0])); diff --git a/src/Tizen.Sensor/Tizen.Sensor/Sensor.cs b/src/Tizen.Sensor/Tizen.Sensor/Sensor.cs index 83fa534..863e8a8 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Sensor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Sensor.cs @@ -42,13 +42,13 @@ namespace Tizen.Sensor private int _maxBatchCount; private bool _isSensing = false; private bool _disposed = false; - private TimeSpan _timeSpan; + private ulong _timestamp; private uint _interval = 0; private uint _maxBatchLatency = 0; private SensorPausePolicy _pausePolicy = SensorPausePolicy.None; private IntPtr _sensorHandle = IntPtr.Zero; private IntPtr _listenerHandle = IntPtr.Zero; - private List batchedEvents { get; set; } = new List(); + internal IList BatchedEvents { get; set; } = new List(); /// @@ -63,11 +63,11 @@ namespace Tizen.Sensor { if (events_count >= 1) { - batchedEvents.Clear(); + BatchedEvents.Clear(); IntPtr currentPtr = eventsPtr; for (int i = 0; i < events_count; i++) { - batchedEvents.Add(Interop.IntPtrToEventStruct(currentPtr)); + BatchedEvents.Add(Interop.IntPtrToEventStruct(currentPtr)); currentPtr += Marshal.SizeOf(); } } @@ -75,9 +75,9 @@ namespace Tizen.Sensor internal Interop.SensorEventStruct latestEvent() { - if (batchedEvents.Count > 0) + if (BatchedEvents.Count > 0) { - return batchedEvents[batchedEvents.Count-1]; + return BatchedEvents[BatchedEvents.Count - 1]; } return default(Interop.SensorEventStruct); } @@ -288,12 +288,31 @@ namespace Tizen.Sensor set { Log.Info(Globals.LogTag, "Setting the timespan of the sensor values"); - _timeSpan = value; + _timestamp = (ulong)value.Ticks; } get { Log.Info(Globals.LogTag, "Getting the timespan of the sensor values"); - return _timeSpan; + return new TimeSpan((Int64)_timestamp); + } + } + + /// + /// Gets or sets the timestamp. + /// + /// 8 + /// Timestamp. + public ulong Timestamp + { + set + { + Log.Info(Globals.LogTag, "Setting the timestamp of the sensor values"); + _timestamp = value; + } + get + { + Log.Info(Globals.LogTag, "Getting the timestamp of the sensor values"); + return _timestamp; } } @@ -357,7 +376,14 @@ namespace Tizen.Sensor Log.Error(Globals.LogTag, "Error starting sensor"); throw SensorErrorFactory.CheckAndThrowException(error, "Unable to Start Sensor Listener"); } - ReadData(); + try + { + ReadData(); + } + catch (InvalidOperationException e) + { + Log.Error(Globals.LogTag, "Sensor has no data."); + } EventListenStart(); _isSensing = true; Log.Info(Globals.LogTag, "Sensor started"); diff --git a/src/Tizen.Sensor/Tizen.Sensor/SensorEnumerations.cs b/src/Tizen.Sensor/Tizen.Sensor/SensorEnumerations.cs index fe7020a..b9cca5c 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/SensorEnumerations.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/SensorEnumerations.cs @@ -102,18 +102,26 @@ namespace Tizen.Sensor /// /// Pedometer sensor. /// + HRMBatch = 0x200, + /// + /// Pedometer sensor. + /// + HRMLEDGreenBatch = 0x201, + /// + /// Pedometer sensor. + /// Pedometer = 0x300, /// /// Sleep monitor sensor. /// SleepMonitor = 0x301, /// - /// Stationary activity detector. - /// /// Auto Rotation sensor. /// AutoRotation = 0x901, /// + /// Stationary activity detector. + /// StationaryActivityDetector = 0x1A00, /// /// Walking activity detector. @@ -354,4 +362,57 @@ namespace Tizen.Sensor /// 7 Degree_270 = 4 } + + + /// + /// HeartRateMonitorBatchState types. + /// + /// 8 + public enum HeartRateMonitorBatchState + { + /// + /// Flush but there was no batched data + /// + SENSOR_HRM_BATCH_STATE_NODATA_FLUSH = -99, + + /// + /// Very low measurement reliability + /// + SENSOR_HRM_BATCH_STATE_VERYLOW_RELIABILITY = -10, + + /// + /// Low measurement reliability + /// + SENSOR_HRM_BATCH_STATE_LOW_RELIABILITY = -8, + + /// + /// Device detachment was detected during auto measurement + /// + SENSOR_HRM_BATCH_STATE_DETACHED_AUTO = -5, + + /// + /// Device detachment was detected + /// + SENSOR_HRM_BATCH_STATE_DETACHED = -3, + + /// + /// The Movement was detected during on-demand measurement + /// + SENSOR_HRM_BATCH_STATE_DETECT_MOVE = -2, + + /// + /// Device attachment was detected + /// + SENSOR_HRM_BATCH_STATE_ATTACHED = -1, + + /// + /// Initial state before measurement + /// + SENSOR_HRM_BATCH_STATE_NONE = 0, + + /// + /// SENSOR_HRM_BATCH_STATE_OK + /// + SENSOR_HRM_BATCH_STATE_OK = 1 + } } -- 2.7.4