Пример #1
0
        internal override void EventListenStart()
        {
            _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
                updateBatchEvents(eventPtr, events_count);
                Interop.SensorEventStruct sensorData = latestEvent();

                Timestamp = sensorData.timestamp;
                if (sensorData.values[0] == 0)
                {
                    Rotation = AutoRotationState.Degree_0;
                }
                else
                {
                    Rotation = (AutoRotationState)sensorData.values[0];
                }
                Accuracy = sensorData.accuracy;

                DataUpdated?.Invoke(this, new AutoRotationSensorDataUpdatedEventArgs(sensorData.values, sensorData.accuracy));
            };

            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");
                throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for auto-rotation");
            }
        }
Пример #2
0
        internal override void EventListenStart()
        {
            _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];
                BiasX    = sensorData.values[3];
                BiasY    = sensorData.values[4];
                BiasZ    = sensorData.values[5];

                DataUpdated?.Invoke(this, new UncalibratedMagnetometerDataUpdatedEventArgs(sensorData.values));
            };

            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");
                throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for uncalibrated magnetometer");
            }
        }
Пример #3
0
        internal override void EventListenStart()
        {
            _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];
                WalkStepCount         = (uint)sensorData.values[1];
                RunStepCount          = (uint)sensorData.values[2];
                MovingDistance        = sensorData.values[3];
                CalorieBurned         = sensorData.values[4];
                LastSpeed             = sensorData.values[5];
                LastSteppingFrequency = sensorData.values[6];
                LastStepStatus        = (PedometerState)sensorData.values[7];

                DataUpdated?.Invoke(this, new PedometerDataUpdatedEventArgs(sensorData.values));
            };

            int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);

            if (error != (int)SensorError.None)
            {
                Log.Error(Globals.LogTag, "Error setting event callback for pedometer sensor");
                throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for pedometer");
            }
        }
Пример #4
0
        /// <summary>
        /// Reads HeartRateMonitorBatch data synchronously.
        /// </summary>
        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);
        }
Пример #5
0
        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 <HeartRateMonitorBatchData>)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");
            }
        }
Пример #6
0
        internal override void EventListenStart()
        {
            _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
                Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);

                TimeSpan         = new TimeSpan((Int64)sensorData.timestamp);
                UltravioletIndex = sensorData.values[0];

                DataUpdated?.Invoke(this, new UltravioletSensorDataUpdatedEventArgs(sensorData.values[0]));
            };

            int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);

            if (error != (int)SensorError.None)
            {
                Log.Error(Globals.LogTag, "Error setting event callback for ultraviolet sensor");
                throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for ultraviolet");
            }
        }
Пример #7
0
        internal override void EventListenStart()
        {
            _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
                updateBatchEvents(eventPtr, events_count);
                Interop.SensorEventStruct sensorData = latestEvent();

                Timestamp = sensorData.timestamp;
                Proximity = (ProximitySensorState)sensorData.values[0];

                DataUpdated?.Invoke(this, new ProximitySensorDataUpdatedEventArgs(sensorData.values[0]));
            };

            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");
                throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for proximity");
            }
        }
Пример #8
0
        internal override void EventListenStart()
        {
            _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
                Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);

                TimeSpan         = new TimeSpan((Int64)sensorData.timestamp);
                InVehicle        = (DetectorState)sensorData.values[0];
                ActivityAccuracy = (SensorDataAccuracy)sensorData.accuracy;

                DataUpdated?.Invoke(this, new InVehicleActivityDetectorDataUpdatedEventArgs(sensorData.values[0]));
            };

            int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);

            if (error != (int)SensorError.None)
            {
                Log.Error(Globals.LogTag, "Error setting event callback for invehicle activity detector");
                throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for invehicle activity detector");
            }
        }
Пример #9
0
        internal override void EventListenStart()
        {
            _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];
                ActivityAccuracy = (SensorDataAccuracy)sensorData.accuracy;

                DataUpdated?.Invoke(this, new RunningActivityDetectorDataUpdatedEventArgs(sensorData.values[0]));
            };

            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");
                throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for running activity detector");
            }
        }
Пример #10
0
        internal override void EventListenStart()
        {
            _callback = (IntPtr sensorHandle, IntPtr eventPtr, IntPtr data) => {
                Interop.SensorEventStruct sensorData = Interop.IntPtrToEventStruct(eventPtr);

                TimeSpan = new TimeSpan((Int64)sensorData.timestamp);
                X        = sensorData.values[0];
                Y        = sensorData.values[1];
                Z        = sensorData.values[2];
                W        = sensorData.values[3];
                Accuracy = sensorData.accuracy;

                DataUpdated?.Invoke(this, new MagnetometerRotationVectorSensorDataUpdatedEventArgs(sensorData.values, sensorData.accuracy));
            };

            int error = Interop.SensorListener.SetEventCallback(ListenerHandle, Interval, _callback, IntPtr.Zero);

            if (error != (int)SensorError.None)
            {
                Log.Error(Globals.LogTag, "Error setting event callback for magnetometer rotation vector sensor");
                throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for magnetometer rotation vector");
            }
        }
        internal override void EventListenStart()
        {
            _callback = (IntPtr sensorHandle, IntPtr eventPtr, uint events_count, IntPtr data) => {
                updateBatchEvents(eventPtr, events_count);
                Interop.SensorEventStruct sensorData = latestEvent();

                Timestamp = sensorData.timestamp;
                X         = sensorData.values[0];
                Y         = sensorData.values[1];
                Z         = sensorData.values[2];
                W         = sensorData.values[3];
                Accuracy  = sensorData.accuracy;

                DataUpdated?.Invoke(this, new GyroscopeRotationVectorSensorDataUpdatedEventArgs(sensorData.values, sensorData.accuracy));
            };

            int error = Interop.SensorListener.SetEventsCallback(ListenerHandle, _callback, IntPtr.Zero);

            if (error != (int)SensorError.None)
            {
                Log.Error(Globals.LogTag, "Error setting event callback for gyroscope rotation vector sensor");
                throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for gyroscope rotation vector");
            }
        }