From a257362278c2a92676f7ef8b774d2dc3fb382fb2 Mon Sep 17 00:00:00 2001 From: Kirill Pakhomov Date: Fri, 2 Nov 2018 19:00:18 +0300 Subject: dcmihandler: Add parameterization to JSON parser method. Pass JSON config file name as a parameter to make parser re-usable with various config files. Change-Id: I5bf1e91121e0e75be58383151f265b32f39a5b60 Signed-off-by: Kirill Pakhomov --- dcmihandler.cpp | 12 +++++------- dcmihandler.hpp | 11 +++++++---- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/dcmihandler.cpp b/dcmihandler.cpp index 1c448ce..7a4db9f 100644 --- a/dcmihandler.cpp +++ b/dcmihandler.cpp @@ -50,8 +50,6 @@ constexpr auto DHCP_TIMING3_LOWER = 0x40; // SendHostNameEnabled will set to true. constexpr auto DHCP_OPT12_ENABLED = "SendHostNameEnabled"; -constexpr auto DCMI_CAP_JSON_FILE = "/usr/share/ipmi-providers/dcmi_cap.json"; - constexpr auto SENSOR_VALUE_INTF = "xyz.openbmc_project.Sensor.Value"; constexpr auto SENSOR_VALUE_PROP = "Value"; constexpr auto SENSOR_SCALE_PROP = "Scale"; @@ -275,7 +273,7 @@ void setDHCPOption(std::string prop, bool value) ipmi::setDbusProperty(bus, service, dhcpObj, dhcpIntf, prop, value); } -Json parseSensorConfig() +Json parseJSONConfig(const std::string& configFile) { std::ifstream jsonFile(configFile); if (!jsonFile.is_open()) @@ -717,7 +715,7 @@ ipmi_ret_t getDCMICapabilities(ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_data_len_t data_len, ipmi_context_t context) { - std::ifstream dcmiCapFile(DCMI_CAP_JSON_FILE); + std::ifstream dcmiCapFile(dcmi::gDCMICapabilitiesConfig); if (!dcmiCapFile.is_open()) { log("DCMI Capabilities file not found"); @@ -838,7 +836,7 @@ std::tuple read(const std::string& type, elog(); } - auto data = parseSensorConfig(); + auto data = parseJSONConfig(gDCMISensorsConfig); static const std::vector empty{}; std::vector readings = data.value(type, empty); size_t numInstances = readings.size(); @@ -889,7 +887,7 @@ std::tuple readAll(const std::string& type, sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()}; size_t numInstances = 0; - auto data = parseSensorConfig(); + auto data = parseJSONConfig(gDCMISensorsConfig); static const std::vector empty{}; std::vector readings = data.value(type, empty); numInstances = readings.size(); @@ -1410,7 +1408,7 @@ ipmi_ret_t getSensorInfo(ipmi_netfn_t netfn, ipmi_cmd_t cmd, { if (!parsed) { - config = dcmi::parseSensorConfig(); + config = dcmi::parseJSONConfig(dcmi::gDCMISensorsConfig); parsed = true; } diff --git a/dcmihandler.hpp b/dcmihandler.hpp index 29757ff..e3fa9de 100644 --- a/dcmihandler.hpp +++ b/dcmihandler.hpp @@ -42,7 +42,7 @@ static constexpr auto networkConfigIntf = static constexpr auto hostNameProp = "HostName"; static constexpr auto temperatureSensorType = 0x01; static constexpr auto maxInstances = 255; -static constexpr auto configFile = +static constexpr auto gDCMISensorsConfig = "/usr/share/ipmi-providers/dcmi_sensors.json"; static constexpr auto ethernetIntf = "xyz.openbmc_project.Network.EthernetInterface"; @@ -54,6 +54,8 @@ static constexpr auto dhcpIntf = static constexpr auto systemBusName = "org.freedesktop.systemd1"; static constexpr auto systemPath = "/org/freedesktop/systemd1"; static constexpr auto systemIntf = "org.freedesktop.systemd1.Manager"; +static constexpr auto gDCMICapabilitiesConfig = + "/usr/share/ipmi-providers/dcmi_cap.json"; namespace assettag { @@ -411,12 +413,13 @@ struct GetTempReadingsResponseHdr uint8_t numDataSets; //!< No. of sets of temperature data } __attribute__((packed)); -/** @brief Parse out JSON config file containing information - * related to sensors. +/** @brief Parse out JSON config file. + * + * @param[in] configFile - JSON config file name * * @return A json object */ -Json parseSensorConfig(); +Json parseJSONConfig(const std::string& configFile); namespace temp_readings { -- cgit v1.2.1