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

Unified Diff: device/generic_sensor/platform_sensor_reader_win.cc

Issue 2847253002: [Device Service] Add RELATIVE_ORIENTATION sensor type to //device/generic_sensor (Closed)
Patch Set: address nits Created 3 years, 8 months 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/platform_sensor_reader_win.cc
diff --git a/device/generic_sensor/platform_sensor_reader_win.cc b/device/generic_sensor/platform_sensor_reader_win.cc
index 566d69688669b0fab6ab1d9b123a270c086bd2bc..f4d44ff9051b3e53544e0ebc521cef8d5b7d742c 100644
--- a/device/generic_sensor/platform_sensor_reader_win.cc
+++ b/device/generic_sensor/platform_sensor_reader_win.cc
@@ -5,6 +5,7 @@
#include "device/generic_sensor/platform_sensor_reader_win.h"
#include <Sensors.h>
+#include <SensorsDef.h>
#include "base/callback.h"
#include "base/memory/ptr_util.h"
@@ -193,6 +194,39 @@ std::unique_ptr<ReaderInitParams> CreateAbsoluteOrientationReaderInitParams() {
return params;
}
+// RelativeOrientation sensor reader initialization parameters.
+std::unique_ptr<ReaderInitParams> CreateRelativeOrientationReaderInitParams() {
+ auto params = base::MakeUnique<ReaderInitParams>();
+ params->sensor_type_id = GUID_SensorType_RelativeOrientation;
+ params->reader_func =
+ base::Bind([](ISensorDataReport& report, SensorReading& reading) {
dcheng 2017/05/03 20:58:53 Google style does not permit mutable reference arg
juncai 2017/05/04 17:51:09 Bug filed: https://bugs.chromium.org/p/chromium/is
+ double quat_x = 0.0;
+ double quat_y = 0.0;
+ double quat_z = 0.0;
+ double quat_w = 0.0;
+ if (!GetReadingValueForProperty(PKEY_SensorData_QuaternionX, report,
+ &quat_x) ||
+ !GetReadingValueForProperty(PKEY_SensorData_QuaternionY, report,
+ &quat_y) ||
+ !GetReadingValueForProperty(PKEY_SensorData_QuaternionZ, report,
+ &quat_z) ||
+ !GetReadingValueForProperty(PKEY_SensorData_QuaternionW, report,
+ &quat_w)) {
+ return E_FAIL;
+ }
+
+ // Windows uses coordinate system where Z axis points down from device
+ // screen, therefore, using right hand notation, we have to reverse
+ // sign for each quaternion component.
+ reading.values[0] = -quat_x;
+ reading.values[1] = -quat_y;
+ reading.values[2] = -quat_z;
+ reading.values[3] = quat_w;
+ return S_OK;
+ });
+ return params;
+}
+
// Creates ReaderInitParams params structure. To implement support for new
// sensor types, new switch case should be added and appropriate fields must
// be set:
@@ -212,6 +246,8 @@ std::unique_ptr<ReaderInitParams> CreateReaderInitParamsForSensor(
return CreateMagnetometerReaderInitParams();
case mojom::SensorType::ABSOLUTE_ORIENTATION:
return CreateAbsoluteOrientationReaderInitParams();
+ case mojom::SensorType::RELATIVE_ORIENTATION:
+ return CreateRelativeOrientationReaderInitParams();
default:
NOTIMPLEMENTED();
return nullptr;

Powered by Google App Engine
This is Rietveld 408576698