blob: 6f06ecc2f747b843ce30be77100538260ac5d608 [file] [log] [blame]
Patrick Williams70a47ba2021-09-02 09:53:31 -05001#pragma once
2
3#include <stdint.h>
4
Tom Josephfb3bc062021-08-17 07:48:11 -07005#include <sdbusplus/message/types.hpp>
6
Tom Joseph75356c12021-06-20 03:52:40 -07007#include <bitset>
8#include <map>
Patrick Williams70a47ba2021-09-02 09:53:31 -05009#include <set>
10#include <string>
Tom Joseph75356c12021-06-20 03:52:40 -070011#include <unordered_map>
Patrick Williams70a47ba2021-09-02 09:53:31 -050012#include <variant>
13#include <vector>
14
15namespace pldm
16{
17
Tom Joseph75356c12021-06-20 03:52:40 -070018using eid = uint8_t;
Patrick Williams70a47ba2021-09-02 09:53:31 -050019using Request = std::vector<uint8_t>;
20using Response = std::vector<uint8_t>;
Tom Josephfb3bc062021-08-17 07:48:11 -070021using Command = uint8_t;
Patrick Williams70a47ba2021-09-02 09:53:31 -050022
23namespace dbus
24{
25
26using ObjectPath = std::string;
27using Service = std::string;
28using Interface = std::string;
29using Interfaces = std::vector<std::string>;
30using Property = std::string;
31using PropertyType = std::string;
Tom Josephfb3bc062021-08-17 07:48:11 -070032using Value =
33 std::variant<bool, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t,
34 uint64_t, double, std::string, std::vector<uint8_t>>;
35
36using PropertyMap = std::map<Property, Value>;
37using InterfaceMap = std::map<Interface, PropertyMap>;
38using ObjectValueTree = std::map<sdbusplus::message::object_path, InterfaceMap>;
Patrick Williams70a47ba2021-09-02 09:53:31 -050039
40} // namespace dbus
41
Tom Joseph75356c12021-06-20 03:52:40 -070042namespace fw_update
43{
44
45// Descriptor definition
46using DescriptorType = uint16_t;
47using DescriptorData = std::vector<uint8_t>;
48using VendorDefinedDescriptorTitle = std::string;
49using VendorDefinedDescriptorData = std::vector<uint8_t>;
50using VendorDefinedDescriptorInfo =
51 std::tuple<VendorDefinedDescriptorTitle, VendorDefinedDescriptorData>;
52using Descriptors =
53 std::map<DescriptorType,
54 std::variant<DescriptorData, VendorDefinedDescriptorInfo>>;
55
56using DescriptorMap = std::unordered_map<eid, Descriptors>;
57
58// Component information
59using CompClassification = uint16_t;
60using CompIdentifier = uint16_t;
61using CompKey = std::pair<CompClassification, CompIdentifier>;
62using CompClassificationIndex = uint8_t;
63using ComponentInfo = std::map<CompKey, CompClassificationIndex>;
64using ComponentInfoMap = std::unordered_map<eid, ComponentInfo>;
65
Tom Joseph1630f392021-06-29 04:30:03 -070066// PackageHeaderInformation
67using PackageHeaderSize = size_t;
68using PackageVersion = std::string;
69using ComponentBitmapBitLength = uint16_t;
70using PackageHeaderChecksum = uint32_t;
71
72// FirmwareDeviceIDRecords
73using DeviceIDRecordCount = uint8_t;
74using DeviceUpdateOptionFlags = std::bitset<32>;
75using ApplicableComponents = std::vector<size_t>;
76using ComponentImageSetVersion = std::string;
77using FirmwareDevicePackageData = std::vector<uint8_t>;
78using FirmwareDeviceIDRecord =
79 std::tuple<DeviceUpdateOptionFlags, ApplicableComponents,
80 ComponentImageSetVersion, Descriptors,
81 FirmwareDevicePackageData>;
82using FirmwareDeviceIDRecords = std::vector<FirmwareDeviceIDRecord>;
83
84// ComponentImageInformation
85using ComponentImageCount = uint16_t;
86using CompComparisonStamp = uint32_t;
87using CompOptions = std::bitset<16>;
88using ReqCompActivationMethod = std::bitset<16>;
89using CompLocationOffset = uint32_t;
90using CompSize = uint32_t;
91using CompVersion = std::string;
92using ComponentImageInfo =
93 std::tuple<CompClassification, CompIdentifier, CompComparisonStamp,
94 CompOptions, ReqCompActivationMethod, CompLocationOffset,
95 CompSize, CompVersion>;
96using ComponentImageInfos = std::vector<ComponentImageInfo>;
97
98enum class ComponentImageInfoPos : size_t
99{
100 CompClassificationPos = 0,
101 CompIdentifierPos = 1,
102 CompComparisonStampPos = 2,
103 CompOptionsPos = 3,
104 ReqCompActivationMethodPos = 4,
105 CompLocationOffsetPos = 5,
106 CompSizePos = 6,
107 CompVersionPos = 7,
108};
109
Tom Joseph75356c12021-06-20 03:52:40 -0700110} // namespace fw_update
111
Patrick Williams70a47ba2021-09-02 09:53:31 -0500112namespace pdr
113{
114
115using EID = uint8_t;
116using TerminusHandle = uint16_t;
117using TerminusID = uint8_t;
118using SensorID = uint16_t;
119using EntityType = uint16_t;
120using EntityInstance = uint16_t;
121using ContainerID = uint16_t;
122using StateSetId = uint16_t;
123using CompositeCount = uint8_t;
124using SensorOffset = uint8_t;
125using EventState = uint8_t;
Manojkiran Eda60e1fe92021-10-08 15:58:16 +0530126using TerminusValidity = uint8_t;
Patrick Williams70a47ba2021-09-02 09:53:31 -0500127
128//!< Subset of the State Set that is supported by a effecter/sensor
129using PossibleStates = std::set<uint8_t>;
130//!< Subset of the State Set that is supported by each effecter/sensor in a
131//!< composite efffecter/sensor
132using CompositeSensorStates = std::vector<PossibleStates>;
133using EntityInfo = std::tuple<ContainerID, EntityType, EntityInstance>;
134using SensorInfo = std::tuple<EntityInfo, CompositeSensorStates>;
135
136} // namespace pdr
137
138} // namespace pldm