// Copyright 2017 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.

#ifndef MODEMFWD_MODEM_HELPER_H_
#define MODEMFWD_MODEM_HELPER_H_

#include <memory>
#include <string>
#include <vector>

#include <base/files/file_path.h>

namespace modemfwd {

struct FirmwareInfo {
  FirmwareInfo() = default;
  FirmwareInfo(const std::string& main_version,
               const std::string& carrier_uuid,
               const std::string& carrier_version)
      : main_version(main_version),
        carrier_uuid(carrier_uuid),
        carrier_version(carrier_version) {}

  std::string main_version;
  std::string carrier_uuid;
  std::string carrier_version;
};

class ModemHelper {
 public:
  virtual ~ModemHelper() = default;

  virtual bool GetFirmwareInfo(FirmwareInfo* out_info) = 0;

  virtual bool FlashMainFirmware(const base::FilePath& path_to_fw) = 0;
  virtual bool FlashCarrierFirmware(const base::FilePath& path_to_fw) = 0;
};

std::unique_ptr<ModemHelper> CreateModemHelper(
    const base::FilePath& helper_path);

}  // namespace modemfwd

#endif  // MODEMFWD_MODEM_HELPER_H_
