Index: device/generic_sensor/linux/sensor_data_linux.cc |
diff --git a/device/generic_sensor/linux/sensor_data_linux.cc b/device/generic_sensor/linux/sensor_data_linux.cc |
deleted file mode 100644 |
index 8e506a918a9051a93378b8260e1ed1959ecc35d3..0000000000000000000000000000000000000000 |
--- a/device/generic_sensor/linux/sensor_data_linux.cc |
+++ /dev/null |
@@ -1,212 +0,0 @@ |
-// Copyright 2016 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. |
- |
-#include "base/sys_info.h" |
-#include "base/version.h" |
-#include "device/generic_sensor/generic_sensor_consts.h" |
-#include "device/generic_sensor/linux/sensor_data_linux.h" |
-#include "device/generic_sensor/public/cpp/sensor_reading.h" |
- |
-namespace device { |
- |
-namespace { |
- |
-using mojom::SensorType; |
- |
-#if defined(OS_CHROMEOS) |
-// ChromeOS kernel version, when axes were changed to XYZ. Before 3.18, |
-// they were YXZ. |
-const char kChangedAxisKernelVersion[] = "3.18.0"; |
-#endif |
- |
-void InitAmbientLightSensorData(SensorPathsLinux* data) { |
- std::vector<std::string> file_names{ |
- "in_illuminance0_input", "in_illuminance_input", "in_illuminance0_raw", |
- "in_illuminance_raw", "in_intensity_both_raw"}; |
- data->sensor_file_names.push_back(std::move(file_names)); |
- data->sensor_frequency_file_name = "in_intensity_sampling_frequency"; |
- data->sensor_scale_name = "in_intensity_scale"; |
- data->apply_scaling_func = base::Bind( |
- [](double scaling_value, double offset, SensorReading& reading) { |
- reading.values[0] = scaling_value * (reading.values[0] + offset); |
- }); |
- data->default_configuration = |
- PlatformSensorConfiguration(kDefaultAmbientLightFrequencyHz); |
-} |
- |
-// Depending on a kernel version, CrOS has a different axes plane. |
-// Before 3.18 it was YXZ and after XYZ. |
-// TODO(maksims): Track crbug.com/501184. 3.14 will have the same sensor stack |
-// as 3.18 has, which will probably change the order of axes. |
-void MaybeCheckKernelVersionAndAssignFileNames( |
- const std::vector<std::string>& file_names_x, |
- const std::vector<std::string>& file_names_y, |
- const std::vector<std::string>& file_names_z, |
- SensorPathsLinux* data) { |
-#if defined(OS_CHROMEOS) |
- const base::Version checked_kernel_version(kChangedAxisKernelVersion); |
- DCHECK(checked_kernel_version.IsValid()); |
- const base::Version current_version(base::SysInfo::OperatingSystemVersion()); |
- if (current_version.IsValid() && current_version < checked_kernel_version) { |
- data->sensor_file_names.push_back(file_names_y); |
- data->sensor_file_names.push_back(file_names_x); |
- } else { |
- data->sensor_file_names.push_back(file_names_x); |
- data->sensor_file_names.push_back(file_names_y); |
- } |
- data->sensor_file_names.push_back(file_names_z); |
-#else |
- data->sensor_file_names.push_back(file_names_x); |
- data->sensor_file_names.push_back(file_names_y); |
- data->sensor_file_names.push_back(file_names_z); |
-#endif |
-} |
- |
-// TODO(maksims): add support for lid accelerometer on chromeos. |
-void InitAccelerometerSensorData(SensorPathsLinux* data) { |
- std::vector<std::string> file_names_x{"in_accel_x_base_raw", |
- "in_accel_x_raw"}; |
- std::vector<std::string> file_names_y{"in_accel_y_base_raw", |
- "in_accel_y_raw"}; |
- std::vector<std::string> file_names_z{"in_accel_z_base_raw", |
- "in_accel_z_raw"}; |
- |
-#if defined(OS_CHROMEOS) |
- data->sensor_scale_name = "in_accel_base_scale"; |
- data->sensor_frequency_file_name = "in_accel_base_sampling_frequency"; |
- data->apply_scaling_func = base::Bind( |
- [](double scaling_value, double offset, SensorReading& reading) { |
- double scaling = kMeanGravity / scaling_value; |
- reading.values[0] = scaling * (reading.values[0] + offset); |
- reading.values[1] = scaling * (reading.values[1] + offset); |
- reading.values[2] = scaling * (reading.values[2] + offset); |
- }); |
-#else |
- data->sensor_scale_name = "in_accel_scale"; |
- data->sensor_offset_file_name = "in_accel_offset"; |
- data->sensor_frequency_file_name = "in_accel_sampling_frequency"; |
- data->apply_scaling_func = base::Bind( |
- [](double scaling_value, double offset, SensorReading& reading) { |
- // Adapt Linux reading values to generic sensor api specs. |
- reading.values[0] = -scaling_value * (reading.values[0] + offset); |
- reading.values[1] = -scaling_value * (reading.values[1] + offset); |
- reading.values[2] = -scaling_value * (reading.values[2] + offset); |
- }); |
-#endif |
- |
- MaybeCheckKernelVersionAndAssignFileNames(file_names_x, file_names_y, |
- file_names_z, data); |
- data->default_configuration = |
- PlatformSensorConfiguration(kDefaultAccelerometerFrequencyHz); |
-} |
- |
-void InitGyroscopeSensorData(SensorPathsLinux* data) { |
- std::vector<std::string> file_names_x{"in_anglvel_x_base_raw", |
- "in_anglvel_x_raw"}; |
- std::vector<std::string> file_names_y{"in_anglvel_y_base_raw", |
- "in_anglvel_y_raw"}; |
- std::vector<std::string> file_names_z{"in_anglvel_z_base_raw", |
- "in_anglvel_z_raw"}; |
-#if defined(OS_CHROMEOS) |
- data->sensor_scale_name = "in_anglvel_base_scale"; |
- data->sensor_frequency_file_name = "in_anglvel_base_frequency"; |
- data->apply_scaling_func = base::Bind( |
- [](double scaling_value, double offset, SensorReading& reading) { |
- double scaling = kMeanGravity * kRadiansInDegrees / scaling_value; |
- // Adapt CrOS reading values to generic sensor api specs. |
- reading.values[0] = -scaling * (reading.values[0] + offset); |
- reading.values[1] = -scaling * (reading.values[1] + offset); |
- reading.values[2] = -scaling * (reading.values[2] + offset); |
- }); |
-#else |
- data->sensor_scale_name = "in_anglvel_scale"; |
- data->sensor_offset_file_name = "in_anglvel_offset"; |
- data->sensor_frequency_file_name = "in_anglvel_sampling_frequency"; |
- data->apply_scaling_func = base::Bind( |
- [](double scaling_value, double offset, SensorReading& reading) { |
- reading.values[0] = scaling_value * (reading.values[0] + offset); |
- reading.values[1] = scaling_value * (reading.values[1] + offset); |
- reading.values[2] = scaling_value * (reading.values[2] + offset); |
- }); |
-#endif |
- |
- MaybeCheckKernelVersionAndAssignFileNames(file_names_x, file_names_y, |
- file_names_z, data); |
- data->default_configuration = |
- PlatformSensorConfiguration(kDefaultGyroscopeFrequencyHz); |
-} |
- |
-// TODO(maksims): Verify magnitometer works correctly on a chromebook when |
-// I get one with that sensor onboard. |
-void InitMagnitometerSensorData(SensorPathsLinux* data) { |
- std::vector<std::string> file_names_x{"in_magn_x_raw"}; |
- std::vector<std::string> file_names_y{"in_magn_y_raw"}; |
- std::vector<std::string> file_names_z{"in_magn_z_raw"}; |
- |
- data->sensor_scale_name = "in_magn_scale"; |
- data->sensor_offset_file_name = "in_magn_offset"; |
- data->sensor_frequency_file_name = "in_magn_sampling_frequency"; |
- data->apply_scaling_func = base::Bind( |
- [](double scaling_value, double offset, SensorReading& reading) { |
- double scaling = scaling_value * kMicroteslaInGauss; |
- reading.values[0] = scaling * (reading.values[0] + offset); |
- reading.values[1] = scaling * (reading.values[1] + offset); |
- reading.values[2] = scaling * (reading.values[2] + offset); |
- }); |
- |
- MaybeCheckKernelVersionAndAssignFileNames(file_names_x, file_names_y, |
- file_names_z, data); |
- data->default_configuration = |
- PlatformSensorConfiguration(kDefaultMagnetometerFrequencyHz); |
-} |
- |
-} // namespace |
- |
-SensorPathsLinux::SensorPathsLinux() = default; |
-SensorPathsLinux::~SensorPathsLinux() = default; |
-SensorPathsLinux::SensorPathsLinux(const SensorPathsLinux& other) = default; |
- |
-bool InitSensorData(SensorType type, SensorPathsLinux* data) { |
- DCHECK(data); |
- |
- data->type = type; |
- switch (type) { |
- case SensorType::AMBIENT_LIGHT: |
- InitAmbientLightSensorData(data); |
- break; |
- case SensorType::ACCELEROMETER: |
- InitAccelerometerSensorData(data); |
- break; |
- case SensorType::GYROSCOPE: |
- InitGyroscopeSensorData(data); |
- break; |
- case SensorType::MAGNETOMETER: |
- InitMagnitometerSensorData(data); |
- break; |
- default: |
- return false; |
- } |
- |
- return true; |
-} |
- |
-SensorInfoLinux::SensorInfoLinux( |
- const std::string& sensor_device_node, |
- double sensor_device_frequency, |
- double sensor_device_scaling_value, |
- double sensor_device_offset_value, |
- mojom::ReportingMode mode, |
- SensorPathsLinux::ReaderFunctor scaling_func, |
- std::vector<base::FilePath> device_reading_files) |
- : device_node(sensor_device_node), |
- device_frequency(sensor_device_frequency), |
- device_scaling_value(sensor_device_scaling_value), |
- device_offset_value(sensor_device_offset_value), |
- reporting_mode(mode), |
- apply_scaling_func(scaling_func), |
- device_reading_files(std::move(device_reading_files)) {} |
- |
-SensorInfoLinux::~SensorInfoLinux() = default; |
- |
-} // namespace device |