blob: d35991f3771b58db006e46066e962f7dd30a7b26 [file] [log] [blame]
// Copyright 2019 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 BIOD_UPDATER_CROS_FP_UPDATER_H_
#define BIOD_UPDATER_CROS_FP_UPDATER_H_
#include <string>
#include <base/files/file_path.h>
#include <base/optional.h>
#include <brillo/enum_flags.h>
#include <chromeos/ec/ec_commands.h>
#include <cros_config/cros_config_interface.h>
#include "biod/cros_fp_device.h"
#include "biod/cros_fp_firmware.h"
#include "biod/updater/update_reason.h"
#include "biod/updater/update_status.h"
namespace biod {
// These utilities should be absorbed by CrosFpDevice.
// This is a temporary holding place until they can be absorbed.
class CrosFpDeviceUpdate {
public:
virtual ~CrosFpDeviceUpdate() = default;
virtual base::Optional<CrosFpDeviceInterface::EcVersion> GetVersion() const;
virtual bool IsFlashProtectEnabled(bool* status) const;
virtual bool Flash(const CrosFpFirmware& fw,
enum ec_current_image image) const;
static std::string EcCurrentImageToString(enum ec_current_image image);
};
// CrosFpBootUpdateCtrl holds the interfaces for the
// external boot-time environment.
class CrosFpBootUpdateCtrl {
public:
virtual ~CrosFpBootUpdateCtrl() = default;
virtual bool TriggerBootUpdateSplash() const;
virtual bool ScheduleReboot() const;
};
namespace updater {
struct UpdateResult {
UpdateStatus status;
UpdateReason reason;
};
UpdateResult DoUpdate(const CrosFpDeviceUpdate& ec_dev,
const CrosFpBootUpdateCtrl& boot_ctrl,
const CrosFpFirmware& fw);
} // namespace updater
} // namespace biod
#endif // BIOD_UPDATER_CROS_FP_UPDATER_H_