Files
H100PowerManger/src/pPowerManger/upmsg/uPower_pmState.h
T
2025-05-14 15:12:26 +08:00

63 lines
1.5 KiB
C++

#ifndef U_POWER_PMSTATE_FB_H
#define U_POWER_PMSTATE_FB_H
#include "../driver.h"
#include "string"
#include "json/json.h"
#include <bitset>
class uPower_pmStateMsg
{
private:
/* data */
public:
uPower_pmStateMsg() {
memset(&state, 0, sizeof(state));
};
~uPower_pmStateMsg() {};
std::string key = "uPower_pmState_fb";
struct uPower_pmState
{
unsigned char workCondition;
unsigned char currentMod;
unsigned char powerState;
unsigned char faultLevel;
vector<unsigned int> faultCode;
unsigned int soc;
unsigned int sustainableTime;
unsigned int m_faultNum;
unsigned char m_leakage;
} state;
std::string buildMsg()
{
// 状态赋值
//1.构建系统状态报告
Json::Value pms;
pms["workCondition_uint"] = state.workCondition;
pms["currentMod_uint8"] = state.currentMod;
pms["powerState_uint8"] = state.powerState;
pms["faultLevel_uint8"] = state.faultLevel;
Json::Value faultCode_array;
for(auto val : state.faultCode)
{
faultCode_array.append(val);
}
pms["faultCode_array"] = faultCode_array;
pms["soc_uint16"] = state.soc;
pms["sustainableTime_int64"] = state.sustainableTime;
pms["leakage_uint8"] = state.m_leakage;
// 转化为json格式
Json::StreamWriterBuilder writerBuilder;
writerBuilder.settings_["indentation"] = "";
return Json::writeString(writerBuilder, pms);
}
};
#endif