blob: e83da714ed7fc2c2a8eb48d3ddb3aba77708eeef [file] [log] [blame]
// Copyright 2017 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 "services/device/generic_sensor/platform_sensor_fusion_algorithm.h"
#include <cmath>
#include "base/stl_util.h"
namespace device {
PlatformSensorFusionAlgorithm::PlatformSensorFusionAlgorithm(
mojom::SensorType fused_type,
const std::vector<mojom::SensorType>& source_types)
: fused_type_(fused_type), source_types_(source_types) {
DCHECK(!source_types_.empty());
}
PlatformSensorFusionAlgorithm::~PlatformSensorFusionAlgorithm() = default;
bool PlatformSensorFusionAlgorithm::IsReadingSignificantlyDifferent(
const SensorReading& reading1,
const SensorReading& reading2) {
for (size_t i = 0; i < SensorReadingRaw::kValuesCount; ++i) {
if (std::fabs(reading1.raw.values[i] - reading2.raw.values[i]) >=
threshold_) {
return true;
}
}
return false;
}
bool PlatformSensorFusionAlgorithm::GetFusedData(
mojom::SensorType which_sensor_changed,
SensorReading* fused_reading) {
DCHECK(base::ContainsValue(source_types_, which_sensor_changed));
return GetFusedDataInternal(which_sensor_changed, fused_reading);
}
void PlatformSensorFusionAlgorithm::Reset() {}
void PlatformSensorFusionAlgorithm::SetFrequency(double) {}
} // namespace device