blob: 933024fa6e28aeed9f20712a6ff6141014a4a60c [file] [log] [blame]
#pragma once
#include <sdbusplus/message.hpp>
#include <map>
#include <string>
#include <variant>
namespace ipmi
{
namespace vpd
{
using Path = std::string;
using Property = std::string;
/// The Value type represents all types that are possible for a FRU info.
/// Most fields in a FRU info are boolean or string. There is also a
/// 3-byte timestamp that, being converted to unix time, fits well into
/// uint64_t.
///
/// However for multirecord area records, there may be other data types,
/// not all of which are directly listed in IPMI FRU specification.
///
/// Hence, this type lists all types possible for sbdusplus except for
/// unixfd, object_path, and signature.
using Value = std::variant<bool, uint8_t, uint16_t, int16_t, uint32_t, int32_t,
uint64_t, int64_t, double, std::string>;
using PropertyMap = std::map<Property, Value>;
using Interface = std::string;
using InterfaceMap = std::map<Interface, PropertyMap>;
using Object = sdbusplus::message::object_path;
using ObjectMap = std::map<Object, InterfaceMap>;
} // namespace vpd
} // namespace ipmi