Commit 4dc22ffc authored by aligungr's avatar aligungr

JSON utility improvement

parent 8c217ae8
......@@ -22,10 +22,15 @@ Json ToJson(const GnbStatusInfo &v)
Json ToJson(const GnbConfig &v)
{
return Json::Obj({
{"name", v.name},
{"nci", v.nci},
{"plmn", ToJson(v.plmn)},
{"tac", v.tac},
{"name", v.name},
{"nssai", ToJson(v.nssais)},
{"ngap-ip", v.ngapIp},
{"gtp-ip", v.gtpIp},
{"paging-drx", ToJson(v.pagingDrx)},
{"ignore-sctp-id", v.ignoreStreamIds},
});
}
......@@ -54,4 +59,21 @@ Json ToJson(const EAmfState &v)
}
}
Json ToJson(const EPagingDrx &v)
{
switch (v)
{
case EPagingDrx::V32:
return "v32";
case EPagingDrx::V64:
return "v64";
case EPagingDrx::V128:
return "v128";
case EPagingDrx::V256:
return "v256";
default:
return "?";
}
}
} // namespace nr::gnb
......@@ -302,5 +302,6 @@ Json ToJson(const GnbStatusInfo &v);
Json ToJson(const GnbConfig &v);
Json ToJson(const NgapAmfContext &v);
Json ToJson(const EAmfState &v);
Json ToJson(const EPagingDrx &v);
} // namespace nr::gnb
\ No newline at end of file
......@@ -22,7 +22,7 @@ UeTimers::UeTimers()
{
}
Json ToJson(ECmState state)
Json ToJson(const ECmState& state)
{
switch (state)
{
......@@ -35,7 +35,7 @@ Json ToJson(ECmState state)
}
}
Json ToJson(ERmState state)
Json ToJson(const ERmState& state)
{
switch (state)
{
......@@ -48,7 +48,7 @@ Json ToJson(ERmState state)
}
}
Json ToJson(EMmState state)
Json ToJson(const EMmState& state)
{
switch (state)
{
......@@ -69,7 +69,7 @@ Json ToJson(EMmState state)
}
}
Json ToJson(EMmSubState state)
Json ToJson(const EMmSubState& state)
{
switch (state)
{
......
......@@ -359,9 +359,9 @@ struct UeStatusInfo
std::optional<UePduSessionInfo> pduSessions[16]{};
};
Json ToJson(ECmState state);
Json ToJson(ERmState state);
Json ToJson(EMmState state);
Json ToJson(EMmSubState state);
Json ToJson(const ECmState& state);
Json ToJson(const ERmState& state);
Json ToJson(const EMmState& state);
Json ToJson(const EMmSubState& state);
} // namespace nr::ue
......@@ -37,3 +37,11 @@ Json ToJson(const Plmn &v)
ss << std::setfill('0') << std::setw(v.isLongMnc ? 3 : 2) << v.mnc;
return ss.str();
}
Json ToJson(const SliceSupport &v)
{
return Json::Obj({
{"sst", ToJson(v.sst)},
{"sd", ToJson(v.sd)}
});
}
......@@ -120,3 +120,4 @@ struct Supi
Json ToJson(const Supi &v);
Json ToJson(const Plmn &v);
Json ToJson(const SliceSupport &v);
......@@ -13,6 +13,7 @@
#include <optional>
#include <string>
#include <utility>
#include <vector>
class Json
{
......@@ -107,3 +108,12 @@ inline Json ToJson(const std::optional<T> &v)
{
return v.has_value() ? ToJson(*v) : Json{nullptr};
}
template <typename T>
inline Json ToJson(const std::vector<T> &v)
{
Json j = Json::Arr({});
for (auto &item : v)
j.push(ToJson(item));
return j;
}
......@@ -7,3 +7,32 @@
//
#include "octet.hpp"
#include "common.hpp"
#include <sstream>
Json ToJson(const octet &v)
{
return "0x" + utils::IntToHex((uint8_t)v);
}
Json ToJson(const octet2 &v)
{
return "0x" + utils::IntToHex((uint16_t)v);
}
Json ToJson(const octet3 &v)
{
std::stringstream stream;
stream << std::setfill('0') << std::setw(6) << std::hex << (uint32_t)v;
return "0x" + stream.str();
}
Json ToJson(const octet4 &v)
{
return "0x" + utils::IntToHex((uint32_t)v);
}
Json ToJson(const octet8 &v)
{
return "0x" + utils::IntToHex((uint64_t)v);
}
\ No newline at end of file
......@@ -8,6 +8,7 @@
#pragma once
#include "json.hpp"
#include <bitset>
#include <cassert>
#include <cstdint>
......@@ -133,6 +134,11 @@ struct octet3
{
return static_cast<int32_t>(value);
}
explicit constexpr operator uint32_t() const
{
return value;
}
};
struct octet4
......@@ -218,4 +224,10 @@ struct octet8
{
return value;
}
};
\ No newline at end of file
};
Json ToJson(const octet &v);
Json ToJson(const octet2 &v);
Json ToJson(const octet3 &v);
Json ToJson(const octet4 &v);
Json ToJson(const octet8 &v);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment