blob: e251c857041947670fac12faefc8562399d2e817 [file] [log] [blame]
// Copyright 2020 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 HERMES_EUICC_SLOT_INFO_H_
#define HERMES_EUICC_SLOT_INFO_H_
#include <base/check.h>
#include <base/optional.h>
#include <string>
#include <utility>
#include "hermes/hermes_common.h"
namespace hermes {
// Information used to inform an EuiccManagerInterface about an eUICC slot, and
// to create & update Euicc instances.
class EuiccSlotInfo {
public:
explicit EuiccSlotInfo(std::string eid)
: logical_slot_(base::nullopt), eid_(std::move(eid)) {}
explicit EuiccSlotInfo(uint8_t logical_slot, std::string eid)
: logical_slot_(logical_slot), eid_(std::move(eid)) {}
void SetLogicalSlot(base::Optional<uint8_t> logical_slot) {
logical_slot_ = std::move(logical_slot);
}
bool IsActive() const { return logical_slot_.has_value(); }
const std::string& eid() const { return eid_; }
const base::Optional<uint8_t>& logical_slot() const { return logical_slot_; }
bool operator==(const EuiccSlotInfo& rhs) const {
return logical_slot_ == rhs.logical_slot_ && eid_ == rhs.eid_;
}
private:
base::Optional<uint8_t> logical_slot_;
std::string eid_;
};
} // namespace hermes
#endif // HERMES_EUICC_SLOT_INFO_H_