| Index: device/generic_sensor/platform_sensor_reader_linux.cc
|
| diff --git a/device/generic_sensor/platform_sensor_reader_linux.cc b/device/generic_sensor/platform_sensor_reader_linux.cc
|
| index 5c014a4b200b43b9f8697bcfa8c5ee1cfc457fb9..e0d3cc8e40e2e4e327882338057ea2c38baaadef 100644
|
| --- a/device/generic_sensor/platform_sensor_reader_linux.cc
|
| +++ b/device/generic_sensor/platform_sensor_reader_linux.cc
|
| @@ -17,14 +17,12 @@ namespace device {
|
|
|
| class PollingSensorReader : public SensorReader {
|
| public:
|
| - PollingSensorReader(
|
| - const SensorInfoLinux* sensor_device,
|
| - PlatformSensorLinux* sensor,
|
| - scoped_refptr<base::SingleThreadTaskRunner> polling_task_runner);
|
| + PollingSensorReader(const SensorInfoLinux* sensor_device,
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner);
|
| ~PollingSensorReader() override;
|
|
|
| // SensorReader implements:
|
| - bool StartFetchingData(
|
| + void StartFetchingData(
|
| const PlatformSensorConfiguration& configuration) override;
|
| void StopFetchingData() override;
|
|
|
| @@ -58,9 +56,8 @@ class PollingSensorReader : public SensorReader {
|
|
|
| PollingSensorReader::PollingSensorReader(
|
| const SensorInfoLinux* sensor_device,
|
| - PlatformSensorLinux* sensor,
|
| - scoped_refptr<base::SingleThreadTaskRunner> polling_task_runner)
|
| - : SensorReader(sensor, polling_task_runner),
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner)
|
| + : SensorReader(std::move(task_runner)),
|
| sensor_file_paths_(sensor_device->device_reading_files),
|
| scaling_value_(sensor_device->device_scaling_value),
|
| offset_value_(sensor_device->device_offset_value),
|
| @@ -72,17 +69,17 @@ PollingSensorReader::~PollingSensorReader() {
|
| polling_task_runner_->DeleteSoon(FROM_HERE, timer_);
|
| }
|
|
|
| -bool PollingSensorReader::StartFetchingData(
|
| +void PollingSensorReader::StartFetchingData(
|
| const PlatformSensorConfiguration& configuration) {
|
| + DCHECK(polling_task_runner_->BelongsToCurrentThread());
|
| + DCHECK(sensor_);
|
| if (is_reading_active_)
|
| StopFetchingData();
|
| -
|
| - return polling_task_runner_->PostTask(
|
| - FROM_HERE, base::Bind(&PollingSensorReader::InitializeTimer,
|
| - weak_factory_.GetWeakPtr(), configuration));
|
| + InitializeTimer(configuration);
|
| }
|
|
|
| void PollingSensorReader::StopFetchingData() {
|
| + DCHECK(polling_task_runner_->BelongsToCurrentThread());
|
| is_reading_active_ = false;
|
| timer_->Stop();
|
| }
|
| @@ -90,6 +87,7 @@ void PollingSensorReader::StopFetchingData() {
|
| void PollingSensorReader::InitializeTimer(
|
| const PlatformSensorConfiguration& configuration) {
|
| DCHECK(polling_task_runner_->BelongsToCurrentThread());
|
| + DCHECK(!is_reading_active_);
|
| timer_->Start(FROM_HERE, base::TimeDelta::FromMicroseconds(
|
| base::Time::kMicrosecondsPerSecond /
|
| configuration.frequency()),
|
| @@ -99,7 +97,6 @@ void PollingSensorReader::InitializeTimer(
|
|
|
| void PollingSensorReader::PollForData() {
|
| DCHECK(polling_task_runner_->BelongsToCurrentThread());
|
| - base::ThreadRestrictions::AssertIOAllowed();
|
|
|
| SensorReading readings;
|
| DCHECK_LE(sensor_file_paths_.size(), arraysize(readings.values));
|
| @@ -134,20 +131,19 @@ void PollingSensorReader::PollForData() {
|
| // static
|
| std::unique_ptr<SensorReader> SensorReader::Create(
|
| const SensorInfoLinux* sensor_device,
|
| - PlatformSensorLinux* sensor,
|
| - scoped_refptr<base::SingleThreadTaskRunner> polling_thread_task_runner) {
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
|
| + base::ThreadRestrictions::AssertIOAllowed();
|
| // TODO(maksims): implement triggered reading. At the moment,
|
| // only polling read is supported.
|
| - return base::MakeUnique<PollingSensorReader>(sensor_device, sensor,
|
| - polling_thread_task_runner);
|
| + return base::MakeUnique<PollingSensorReader>(sensor_device,
|
| + std::move(task_runner));
|
| }
|
|
|
| SensorReader::SensorReader(
|
| - PlatformSensorLinux* sensor,
|
| - scoped_refptr<base::SingleThreadTaskRunner> polling_task_runner)
|
| - : sensor_(sensor),
|
| - polling_task_runner_(polling_task_runner),
|
| - task_runner_(base::ThreadTaskRunnerHandle::Get()),
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner)
|
| + : sensor_(nullptr),
|
| + polling_task_runner_(base::ThreadTaskRunnerHandle::Get()),
|
| + task_runner_(std::move(task_runner)),
|
| is_reading_active_(false) {}
|
|
|
| SensorReader::~SensorReader() = default;
|
| @@ -160,4 +156,9 @@ void SensorReader::NotifyReadError() {
|
| }
|
| }
|
|
|
| +void SensorReader::SetPlatformSensorLinux(PlatformSensorLinux* sensor) {
|
| + DCHECK(!sensor_);
|
| + sensor_ = sensor;
|
| +}
|
| +
|
| } // namespace device
|
|
|