* Copyright (c) 2026 Huawei Technologies Co., Ltd.
* openUBMC is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
#include "ina.h"
#include <mc/exception.h>
#include <mc/log.h>
using namespace dev;
bool ina_object::init(mc::mutable_dict& csr_object, const mc::dict&)
{
try {
dev::chip_base* base_chip = nullptr;
if (!bind_internal_chip(csr_object, base_chip, "Ina")) {
return false;
}
dev::chip_ina* ina_chip = static_cast<dev::chip_ina*>(base_chip);
initialize_default_properties(m_interface_chip, csr_object);
m_interface_ina.from_variant(csr_object);
m_interface_trace_chip.m_chip = base_chip;
m_interface_ina.m_chip_ina = ina_chip;
} catch (const std::exception& e) {
elog("Ina init failed, exception: ${exception}", ("exception", e.what()));
return false;
}
return true;
}
bool ina_object::start()
{
return true;
}
void ina_object::stop()
{
}
std::string ina_object::dump()
{
try {
if (m_chip_holder == nullptr) {
elog("ina device not initialized");
return "";
}
auto result = m_chip_holder->dump();
ilog("ina dump successfully");
return result;
} catch (const std::exception& e) {
elog("ina device dump exception: ${error}", ("error", e.what()));
return "";
}
}
MC_REFLECT(dev::ina_object, ((m_interface_chip, "bmc.dev.Chip"))((m_interface_ina, "bmc.dev.Chip.PowerMeter.Ina"))(
(m_interface_trace_chip, "bmc.kepler.Release.TraceChip")))