 Chromium Code Reviews
 Chromium Code Reviews Issue 2533793002:
  [sensors](CrOS/Linux) Implement Sensor device manager for sensors  (Closed)
    
  
    Issue 2533793002:
  [sensors](CrOS/Linux) Implement Sensor device manager for sensors  (Closed) 
  | 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 | 
| index 1d937c8b25ccc7ea9ea31f139e67b4609a67bf16..ed2f2581a093218a4953911b72bdd419d1368b99 100644 | 
| --- a/device/generic_sensor/linux/sensor_data_linux.cc | 
| +++ b/device/generic_sensor/linux/sensor_data_linux.cc | 
| @@ -28,7 +28,6 @@ void InitAmbientLightSensorData(SensorDataLinux* data) { | 
| "in_illuminance0_input", "in_illuminance_input", "in_illuminance0_raw", | 
| "in_illuminance_raw"}; | 
| data->sensor_file_names.push_back(std::move(file_names)); | 
| - data->reporting_mode = mojom::ReportingMode::ON_CHANGE; | 
| data->default_configuration = | 
| PlatformSensorConfiguration(kDefaultAmbientLightFrequencyHz); | 
| } | 
| @@ -72,27 +71,30 @@ void InitAccelerometerSensorData(SensorDataLinux* data) { | 
| #if defined(OS_CHROMEOS) | 
| data->sensor_scale_name = "in_accel_base_scale"; | 
| - data->apply_scaling_func = | 
| - base::Bind([](double scaling_value, SensorReading& reading) { | 
| - double scaling = kMeanGravity / scaling_value; | 
| + 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) + offset; | 
| reading.values[0] = scaling * reading.values[0]; | 
| reading.values[1] = scaling * reading.values[1]; | 
| reading.values[2] = scaling * reading.values[2]; | 
| }); | 
| #else | 
| data->sensor_scale_name = "in_accel_scale"; | 
| - data->apply_scaling_func = | 
| - base::Bind([](double scaling_value, SensorReading& reading) { | 
| + 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) { | 
| + double scaling = scaling_value + offset; | 
| // Adapt Linux reading values to generic sensor api specs. | 
| - reading.values[0] = -scaling_value * reading.values[0]; | 
| - reading.values[1] = -scaling_value * reading.values[1]; | 
| - reading.values[2] = -scaling_value * reading.values[2]; | 
| + reading.values[0] = -scaling * reading.values[0]; | 
| + reading.values[1] = -scaling * reading.values[1]; | 
| + reading.values[2] = -scaling * reading.values[2]; | 
| }); | 
| #endif | 
| MaybeCheckKernelVersionAndAssignFileNames(file_names_x, file_names_y, | 
| file_names_z, data); | 
| - data->reporting_mode = mojom::ReportingMode::CONTINUOUS; | 
| data->default_configuration = | 
| PlatformSensorConfiguration(kDefaultAccelerometerFrequencyHz); | 
| } | 
| @@ -106,10 +108,11 @@ void InitGyroscopeSensorData(SensorDataLinux* data) { | 
| "in_anglvel_z_raw"}; | 
| #if defined(OS_CHROMEOS) | 
| data->sensor_scale_name = "in_anglvel_base_scale"; | 
| - data->apply_scaling_func = | 
| - base::Bind([](double scaling_value, SensorReading& reading) { | 
| + 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 * kRadiansInDegreesPerSecond / scaling_value; | 
| + kMeanGravity * kRadiansInDegreesPerSecond / scaling_value + offset; | 
| // Adapt CrOS reading values to generic sensor api specs. | 
| reading.values[0] = -scaling * reading.values[0]; | 
| reading.values[1] = -scaling * reading.values[1]; | 
| @@ -117,17 +120,19 @@ void InitGyroscopeSensorData(SensorDataLinux* data) { | 
| }); | 
| #else | 
| data->sensor_scale_name = "in_anglvel_scale"; | 
| - data->apply_scaling_func = | 
| - base::Bind([](double scaling_value, SensorReading& reading) { | 
| - reading.values[0] = scaling_value * reading.values[0]; | 
| - reading.values[1] = scaling_value * reading.values[1]; | 
| - reading.values[2] = scaling_value * reading.values[2]; | 
| + 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) { | 
| + double scaling = scaling_value + offset; | 
| + reading.values[0] = scaling * reading.values[0]; | 
| + reading.values[1] = scaling * reading.values[1]; | 
| + reading.values[2] = scaling * reading.values[2]; | 
| }); | 
| #endif | 
| MaybeCheckKernelVersionAndAssignFileNames(file_names_x, file_names_y, | 
| file_names_z, data); | 
| - data->reporting_mode = mojom::ReportingMode::CONTINUOUS; | 
| data->default_configuration = | 
| PlatformSensorConfiguration(kDefaultGyroscopeFrequencyHz); | 
| } | 
| @@ -140,16 +145,18 @@ void InitMagnitometerSensorData(SensorDataLinux* data) { | 
| std::vector<std::string> file_names_z{"in_magn_z_raw"}; | 
| data->sensor_scale_name = "in_magn_scale"; | 
| - data->apply_scaling_func = base::Bind([](double scaling_value, | 
| - SensorReading& reading) { | 
| - reading.values[0] = scaling_value * kMicroteslaInGauss * reading.values[0]; | 
| - reading.values[1] = scaling_value * kMicroteslaInGauss * reading.values[1]; | 
| - reading.values[2] = scaling_value * kMicroteslaInGauss * reading.values[2]; | 
| - }); | 
| + 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 + offset; | 
| + reading.values[0] = scaling * kMicroteslaInGauss * reading.values[0]; | 
| + reading.values[1] = scaling * kMicroteslaInGauss * reading.values[1]; | 
| + reading.values[2] = scaling * kMicroteslaInGauss * reading.values[2]; | 
| + }); | 
| MaybeCheckKernelVersionAndAssignFileNames(file_names_x, file_names_y, | 
| file_names_z, data); | 
| - data->reporting_mode = mojom::ReportingMode::CONTINUOUS; | 
| data->default_configuration = | 
| PlatformSensorConfiguration(kDefaultMagnetometerFrequencyHz); | 
| } | 
| @@ -165,6 +172,7 @@ SensorDataLinux::SensorDataLinux(const SensorDataLinux& other) = default; | 
| bool InitSensorData(SensorType type, SensorDataLinux* data) { | 
| DCHECK(data); | 
| + data->type = type; | 
| switch (type) { | 
| case SensorType::AMBIENT_LIGHT: | 
| InitAmbientLightSensorData(data); | 
| @@ -179,7 +187,7 @@ bool InitSensorData(SensorType type, SensorDataLinux* data) { | 
| InitMagnitometerSensorData(data); | 
| break; | 
| default: | 
| - NOTIMPLEMENTED(); | 
| + // NOTIMPLEMENTED(); | 
| 
Reilly Grant (use Gerrit)
2016/11/29 20:19:56
Remove this line since now we regularly expect to
 
maksims (do not use this acc)
2016/12/05 13:06:59
Done.
 | 
| return false; | 
| } |