Пример #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
        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");
            }
        }
Пример #5
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");
            }
        }
Пример #6
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);
                Stationary       = (DetectorState)sensorData.values[0];
                ActivityAccuracy = (SensorDataAccuracy)sensorData.accuracy;

                DataUpdated?.Invoke(this, new StationaryActivityDetectorDataUpdatedEventArgs(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 stationary activity detector");
                throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for stationary activity detector");
            }
        }
        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 MagnetometerRotationVectorSensorDataUpdatedEventArgs(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 magnetometer rotation vector sensor");
                throw SensorErrorFactory.CheckAndThrowException(error, "Unable to set event callback for magnetometer rotation vector");
            }
        }