blob: 625918c1b0ed7d20000ed5dd6c72f0d2bd4f2c91 [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_CROS_FP_FIRMWARE_H_
#define BIOD_CROS_FP_FIRMWARE_H_
#include <string>
#include <base/files/file_path.h>
#include <base/macros.h>
namespace biod {
class CrosFpFirmware {
public:
enum class Status {
kUninitialized,
kOk,
kNotFound,
kOpenError,
kBadFmap,
};
struct ImageVersion {
std::string ro_version;
std::string rw_version;
};
explicit CrosFpFirmware(const base::FilePath& image_path);
CrosFpFirmware(const CrosFpFirmware&) = delete;
CrosFpFirmware& operator=(const CrosFpFirmware&) = delete;
virtual ~CrosFpFirmware() = default;
base::FilePath GetPath() const;
bool IsValid() const;
Status GetStatus() const;
std::string GetStatusString() const;
const ImageVersion& GetVersion() const;
protected:
CrosFpFirmware() = default;
void set_status(Status status) { status_ = status; }
void set_version(const ImageVersion& version) { version_ = version; }
private:
base::FilePath path_;
ImageVersion version_;
Status status_ = Status::kUninitialized;
friend class CrosFpFirmwareTest;
void DecodeVersionFromFile();
static std::string StatusToString(Status status);
};
} // namespace biod
#endif // BIOD_CROS_FP_FIRMWARE_H_