summaryrefslogtreecommitdiffstats
path: root/dcmihandler.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'dcmihandler.hpp')
-rw-r--r--dcmihandler.hpp45
1 files changed, 44 insertions, 1 deletions
diff --git a/dcmihandler.hpp b/dcmihandler.hpp
index de0d82f..8ebc660 100644
--- a/dcmihandler.hpp
+++ b/dcmihandler.hpp
@@ -4,12 +4,13 @@
#include <map>
#include <string>
#include <vector>
+#include <sdbusplus/bus.hpp>
// IPMI commands for net functions.
enum ipmi_netfn_sen_cmds
{
// Get capability bits
- IPMI_CMD_DCMI_GET_POWER = 0x03,
+ IPMI_CMD_DCMI_GET_POWER_LIMIT = 0x03,
IPMI_CMD_DCMI_GET_ASSET_TAG = 0x06,
IPMI_CMD_DCMI_SET_ASSET_TAG = 0x08,
};
@@ -102,6 +103,48 @@ std::string readAssetTag();
*/
void writeAssetTag(const std::string& assetTag);
+/** @brief Read the current power cap value
+ *
+ * @param[in] bus - dbus connection
+ *
+ * @return On success return the power cap value.
+ */
+uint32_t getPcap(sdbusplus::bus::bus& bus);
+
+/** @brief Check if the power capping is enabled
+ *
+ * @param[in] bus - dbus connection
+ *
+ * @return true if the powerCap is enabled and false if the powercap
+ * is disabled.
+ */
+bool getPcapEnabled(sdbusplus::bus::bus& bus);
+
+/** @struct GetPowerLimitRequest
+ *
+ * DCMI payload for Get Power Limit command request.
+ */
+struct GetPowerLimitRequest
+{
+ uint8_t groupID; //!< Group extension identification.
+ uint16_t reserved; //!< Reserved
+} __attribute__((packed));
+
+/** @struct GetPowerLimitResponse
+ *
+ * DCMI payload for Get Power Limit command response.
+ */
+struct GetPowerLimitResponse
+{
+ uint8_t groupID; //!< Group extension identification.
+ uint16_t reserved; //!< Reserved.
+ uint8_t exceptionAction; //!< Exception action.
+ uint16_t powerLimit; //!< Power limit requested in watts.
+ uint32_t correctionTime; //!< Correction time limit in milliseconds.
+ uint16_t reserved1; //!< Reserved.
+ uint16_t samplingPeriod; //!< Statistics sampling period in seconds.
+} __attribute__((packed));
+
} // namespace dcmi
#endif
OpenPOWER on IntegriCloud