You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.7 KiB
C++
74 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include "nlohmann/json.hpp"
|
|
|
|
namespace nsDebug {
|
|
using stHardware = struct _stHardware {
|
|
bool Motor{ false };
|
|
bool Input{ false };
|
|
bool Output{ false };
|
|
// custom
|
|
bool ETEL{ false };
|
|
};
|
|
|
|
using stDebug = struct _stDebug {
|
|
stHardware Hardware;
|
|
stHardware InitController;
|
|
stHardware MmfLog;
|
|
};
|
|
}
|
|
|
|
namespace nsDebug {
|
|
using namespace nlohmann;
|
|
|
|
template <typename T>
|
|
inline void getValue(const nlohmann::json& j, const std::string& fieldname, T& value)
|
|
{
|
|
if (j.contains(fieldname))
|
|
{
|
|
j.at(fieldname).get_to(value);
|
|
}
|
|
}
|
|
|
|
void from_json(const json& j, stHardware& x);
|
|
void to_json(json& j, const stHardware& x);
|
|
|
|
void from_json(const json& j, stDebug& x);
|
|
void to_json(json& j, const stDebug& x);
|
|
|
|
inline void from_json(const json& j, stHardware& x)
|
|
{
|
|
getValue(j, "Motor", x.Motor);
|
|
getValue(j, "Input", x.Input);
|
|
getValue(j, "Output", x.Output);
|
|
//
|
|
getValue(j, "ETEL", x.ETEL);
|
|
}
|
|
|
|
inline void to_json(json& j, const stHardware& x)
|
|
{
|
|
j = nlohmann::json{
|
|
{ "Motor", x.Motor },
|
|
{ "Input", x.Input },
|
|
{ "Output", x.Output },
|
|
//
|
|
{ "ETEL", x.ETEL }
|
|
};
|
|
}
|
|
|
|
inline void from_json(const json& j, stDebug& x)
|
|
{
|
|
getValue(j, "Hardware", x.Hardware);
|
|
getValue(j, "InitController", x.InitController);
|
|
getValue(j, "MmfLog", x.MmfLog);
|
|
}
|
|
|
|
inline void to_json(json& j, const stDebug& x)
|
|
{
|
|
j = nlohmann::json{
|
|
{ "Hardware", x.Hardware },
|
|
{ "InitController", x.InitController },
|
|
{ "MmfLog", x.MmfLog }
|
|
};
|
|
}
|
|
} |