Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2305)

Unified Diff: device/generic_sensor/linux/platform_sensor_utils_linux.cc

Issue 2492773002: [sensors][CrOS/Linux] Implementation of motion sensors for CrOS/Linux platforms (Closed)
Patch Set: rebased Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: device/generic_sensor/linux/platform_sensor_utils_linux.cc
diff --git a/device/generic_sensor/linux/platform_sensor_utils_linux.cc b/device/generic_sensor/linux/platform_sensor_utils_linux.cc
index 49511ce8862187696eaafd1c764aee0711b44b88..28012e5e9e86a37c2bfd485408507faf8b85e0b7 100644
--- a/device/generic_sensor/linux/platform_sensor_utils_linux.cc
+++ b/device/generic_sensor/linux/platform_sensor_utils_linux.cc
@@ -9,7 +9,6 @@
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/threading/thread_restrictions.h"
-#include "device/generic_sensor/linux/sensor_data_linux.h"
#include "device/generic_sensor/public/cpp/sensor_reading.h"
namespace device {
@@ -52,6 +51,25 @@ bool GetSensorFilePaths(const SensorDataLinux& data,
return true;
}
+double GetSensorScalingValues(const char* scale_file_name,
Mikhail 2016/11/10 15:45:02 better to pass std::string
maksims (do not use this acc) 2016/11/11 08:52:02 Done.
+ const base::FilePath& sensor_base_path) {
+ double scaling_value = 1;
+
+ base::FilePath scale_path = sensor_base_path.Append(scale_file_name);
+ if (base::PathExists(scale_path)) {
+ std::string scale;
+ if (!base::ReadFileToString(scale_path, &scale))
+ return scaling_value;
+ base::TrimWhitespaceASCII(scale, base::TRIM_ALL, &scale);
+ double scale_value = 1;
Reilly Grant (use Gerrit) 2016/11/10 16:53:17 There's no reason to declare a new variable here.
maksims (do not use this acc) 2016/11/11 08:52:02 Done.
+ if (!base::StringToDouble(scale, &scale_value))
+ return scaling_value;
+ scaling_value = scale_value;
+ }
+
+ return scaling_value;
+}
+
} // namespace
// static
@@ -61,11 +79,22 @@ std::unique_ptr<SensorReader> SensorReader::Create(
std::vector<base::FilePath> sensor_paths;
if (!GetSensorFilePaths(data, &sensor_paths))
return nullptr;
- return base::WrapUnique(new SensorReader(std::move(sensor_paths)));
+
+ base::FilePath sensor_base_path = sensor_paths.back().DirName();
Mikhail 2016/11/10 15:45:02 check that sensor_paths is not empty?
maksims (do not use this acc) 2016/11/11 08:52:02 Done.
+ double scaling_value =
+ GetSensorScalingValues(data.sensor_scale_name.c_str(), sensor_base_path);
+
+ return base::WrapUnique(new SensorReader(
+ std::move(sensor_paths), scaling_value, data.apply_scaling_func));
}
-SensorReader::SensorReader(std::vector<base::FilePath> sensor_paths)
- : sensor_paths_(std::move(sensor_paths)) {
+SensorReader::SensorReader(
+ std::vector<base::FilePath> sensor_paths,
+ double scaling_value,
+ const SensorDataLinux::ReaderFunctor& apply_scaling_func)
+ : sensor_paths_(std::move(sensor_paths)),
+ scaling_value_(scaling_value),
+ apply_scaling_func_(apply_scaling_func) {
DCHECK(!sensor_paths_.empty());
}
@@ -87,6 +116,8 @@ bool SensorReader::ReadSensorReading(SensorReading* reading) {
return false;
readings.values[i++] = new_value;
}
+ if (!apply_scaling_func_.is_null())
+ apply_scaling_func_.Run(scaling_value_, readings);
*reading = readings;
return true;
}

Powered by Google App Engine
This is Rietveld 408576698