blob: 30401bfb454cc94eea97bbfa3b5a236cbc9c725f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
#ifndef __IPMI_FRU_AREA_H__
#define __IPMI_FRU_AREA_H__
#include "frup.hpp"
#include "writefrudata.hpp"
#include <cstdint>
#include <memory>
#include <string>
#include <vector>
using std::uint8_t;
class IPMIFruArea
{
private:
// Unique way of identifying a FRU
uint8_t iv_fruid = 0;
// Type of the fru matching offsets in common header
ipmi_fru_area_type iv_type = IPMI_FRU_AREA_INTERNAL_USE;
// Name of the fru area. ( BOARD/CHASSIS/PRODUCT )
std::string iv_name;
// Length of a specific fru area.
size_t iv_len = 0;
// Special bit for BMC readable eeprom only.
bool iv_bmc_fru = false;
// If a FRU is physically present.
bool iv_present = false;
// Whether a particular area is valid ?
bool iv_valid = false;
// Actual area data.
uint8_t* iv_data = nullptr;
// fru inventory dbus name
std::string iv_bus_name;
// fru inventory dbus object path
std::string iv_obj_path;
// fru inventory dbus interface name
std::string iv_intf_name;
// Default constructor disabled.
IPMIFruArea();
public:
// constructor
IPMIFruArea(const uint8_t fruid, const ipmi_fru_area_type type,
bool bmc_fru = false);
// Destructor
virtual ~IPMIFruArea();
// Sets the present bit
inline void set_present(const bool present)
{
iv_present = present;
}
// returns fru id;
uint8_t get_fruid() const
{
return iv_fruid;
}
// Returns the length.
size_t get_len() const
{
return iv_len;
}
// Returns the type of the current fru area
ipmi_fru_area_type get_type() const
{
return iv_type;
}
// Returns the name
const char* get_name() const
{
return iv_name.c_str();
}
// Returns SD bus name
const char* get_bus_name() const
{
return iv_bus_name.c_str();
}
// Retrns SD bus object path
const char* get_obj_path() const
{
return iv_obj_path.c_str();
}
// Returns SD bus interface name
const char* get_intf_name() const
{
return iv_intf_name.c_str();
}
// Returns the data portion
inline uint8_t* get_data() const
{
return iv_data;
}
// Accepts a pointer to data and sets it in the object.
void set_data(const uint8_t*, const size_t);
// Sets the dbus parameters
void update_dbus_paths(const char*, const char*, const char*);
};
#endif
|