// 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 "device/generic_sensor/linux/sensor_data_linux.h"
#include "device/sensors/public/cpp/device_sensors_consts.h"

namespace device {

namespace {

using mojom::SensorType;

const base::FilePath::CharType* kSensorsBasePath =
    FILE_PATH_LITERAL("/sys/bus/iio/devices");

const std::string kAmbientLightFileNames[] = {
    "in_illuminance0_input", "in_illuminance_input", "in_illuminance0_raw",
    "in_illuminance_raw", "illuminance0_input"};

}  // namespace

SensorDataLinux::SensorDataLinux() : base_path_sensor_linux(kSensorsBasePath) {}

SensorDataLinux::~SensorDataLinux() = default;

SensorDataLinux::SensorDataLinux(const SensorDataLinux& other) = default;

bool InitSensorData(SensorType type, SensorDataLinux* data) {
  DCHECK(data);

  switch (type) {
    case SensorType::AMBIENT_LIGHT: {
      std::vector<std::string> file_names(
          kAmbientLightFileNames,
          kAmbientLightFileNames + arraysize(kAmbientLightFileNames));
      data->sensor_file_names.push_back(std::move(file_names));
      data->reporting_mode = mojom::ReportingMode::ON_CHANGE;
      data->default_configuration =
          PlatformSensorConfiguration(kDefaultAmbientLightFrequencyHz);
      break;
    }
    default: {
      NOTIMPLEMENTED();
      return false;
    }
  }
  return true;
}

}  // namespace device
