| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef DEVICE_GENERIC_SENSOR_PLATFORM_SENSOR_ACCELEROMETER_MAC_H_ |
| #define DEVICE_GENERIC_SENSOR_PLATFORM_SENSOR_ACCELEROMETER_MAC_H_ |
| |
| #include <memory> |
| |
| #include "base/timer/timer.h" |
| #include "device/generic_sensor/platform_sensor.h" |
| |
| class SuddenMotionSensor; |
| |
| namespace device { |
| |
| // Implementation of PlatformSensor for macOS to query the accelerometer |
| // sensor. |
| // This is a single instance object per browser process which is created by |
| // The singleton PlatformSensorProviderMac. If there are no clients, this |
| // instance is not created. |
| class PlatformSensorAccelerometerMac : public PlatformSensor { |
| public: |
| // Construct a platform sensor of type ACCELEROMETER, given a buffer |mapping| |
| // where readings will be written. |
| PlatformSensorAccelerometerMac(mojo::ScopedSharedBufferMapping mapping, |
| PlatformSensorProvider* provider); |
| |
| mojom::ReportingMode GetReportingMode() override; |
| // Can only be called once, the first time or after a StopSensor call. |
| bool StartSensor(const PlatformSensorConfiguration& configuration) override; |
| void StopSensor() override; |
| |
| protected: |
| ~PlatformSensorAccelerometerMac() override; |
| bool CheckSensorConfiguration( |
| const PlatformSensorConfiguration& configuration) override; |
| PlatformSensorConfiguration GetDefaultConfiguration() override; |
| |
| private: |
| void PollForData(); |
| |
| std::unique_ptr<SuddenMotionSensor> sudden_motion_sensor_; |
| |
| SensorReading reading_; |
| |
| // Repeating timer for data polling. |
| base::RepeatingTimer timer_; |
| |
| DISALLOW_COPY_AND_ASSIGN(PlatformSensorAccelerometerMac); |
| }; |
| |
| } // namespace device |
| |
| #endif // DEVICE_GENERIC_SENSOR_PLATFORM_SENSOR_ACCELEROMETER_MAC_H_ |