// Copyright 2015 The Chromium OS 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 "debugd/src/battery_tool.h"

#include <unistd.h>

#include "debugd/src/process_with_id.h"
#include "debugd/src/process_with_output.h"

using base::StringPrintf;

namespace {

const char kBatteryFirmware[] = "/usr/sbin/ec_sb_firmware_update";
const char kEcTool[] = "/usr/sbin/ectool";
const char kUnsupportedMessage[] =
    "Sorry, but this command is unavailable on this device.";

}  // namespace


namespace debugd {

std::string BatteryTool::BatteryFirmware(const std::string& option,
                                         DBus::Error* error) {
  const char *tool_name;
  std::string output;
  ProcessWithOutput process;
  // Disabling sandboxing since battery requires higher privileges.
  process.DisableSandbox();
  if (!process.Init())
    return "<process init failed>";

  if (option == "info") {
    tool_name = kEcTool;
    process.AddArg(tool_name);
    process.AddArg("battery");
  } else if (option == "update") {
    tool_name = kBatteryFirmware;
    process.AddArg(tool_name);
    process.AddArg("update");
  } else if (option == "check") {
    tool_name = kBatteryFirmware;
    process.AddArg(tool_name);
    process.AddArg("check");
  } else {
    return "<process invalid option>";
  }
  if (access(tool_name, F_OK) != 0)
    return kUnsupportedMessage;

  process.Run();
  process.GetOutput(&output);
  return output;
}

}  // namespace debugd
