summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Kosenkov <NKosenkov@IBS.RU>2022-08-26 18:58:55 +0300
committerNikita Kosenkov <NKosenkov@IBS.RU>2022-08-26 18:58:55 +0300
commit2d080551eb07d137ca5cd0d2674564274ccb4a5b (patch)
treeb609375ee540787c29c0e27ca90497c89e4a403b
parent8732a9fe648a72c5b17b119581c6d8dd8c0f1ae4 (diff)
downloadsmbios-mdrv1-2d080551eb07d137ca5cd0d2674564274ccb4a5b.tar.xz
Add location and present setters
-rw-r--r--include/dimm.hpp47
-rw-r--r--src/dimm.cpp33
2 files changed, 65 insertions, 15 deletions
diff --git a/include/dimm.hpp b/include/dimm.hpp
index caac229..00fa9bb 100644
--- a/include/dimm.hpp
+++ b/include/dimm.hpp
@@ -15,9 +15,14 @@
*/
#pragma once
+#include "smbios.hpp"
+
#include <xyz/openbmc_project/Inventory/Decorator/Asset/server.hpp>
#include <xyz/openbmc_project/Inventory/Item/Dimm/server.hpp>
-#include "smbios.hpp"
+#include <xyz/openbmc_project/Inventory/Decorator/LocationCode/server.hpp>
+#include <xyz/openbmc_project/Inventory/Item/server.hpp>
+#include <xyz/openbmc_project/State/Decorator/OperationalStatus/server.hpp>
+#include <xyz/openbmc_project/Inventory/Connector/Slot/server.hpp>
namespace phosphor
{
@@ -28,11 +33,19 @@ namespace smbios
using DeviceType =
sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::DeviceType;
-class Dimm
- : sdbusplus::server::object::object<
- sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm>,
- sdbusplus::server::object::object<
- sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::Asset>
+class Dimm :
+ sdbusplus::server::object_t<
+ sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm>,
+ sdbusplus::server::object_t<
+ sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::Asset>,
+ sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::Inventory::
+ Decorator::server::LocationCode>,
+ sdbusplus::server::object_t<
+ sdbusplus::xyz::openbmc_project::Inventory::server::Item>,
+ sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::State::
+ Decorator::server::OperationalStatus>,
+ sdbusplus::server::object_t<
+ sdbusplus::xyz::openbmc_project::Inventory::Connector::server::Slot>
{
public:
@@ -46,12 +59,24 @@ class Dimm
Dimm(sdbusplus::bus::bus &bus, const std::string &objPath,
const uint8_t &dimmId, struct ManagedDataRegion *region) :
- sdbusplus::server::object::object<
+ sdbusplus::server::object_t<
sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm>(
bus, objPath.c_str()),
- sdbusplus::server::object::object<
- sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::
- Asset>(bus, objPath.c_str()),
+ sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::Inventory::
+ Decorator::server::Asset>(
+ bus, objPath.c_str()),
+ sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::Inventory::
+ Decorator::server::LocationCode>(
+ bus, objPath.c_str()),
+ sdbusplus::server::object_t<
+ sdbusplus::xyz::openbmc_project::Inventory::server::Item>(
+ bus, objPath.c_str()),
+ sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::State::
+ Decorator::server::OperationalStatus>(
+ bus, objPath.c_str()),
+ sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::Inventory::
+ Connector::server::Slot>(
+ bus, objPath.c_str()),
dimmNum(dimmId), regionS(region)
{
memoryInfoUpdate();
@@ -66,8 +91,10 @@ class Dimm
std::string memoryTypeDetail(std::string value) override;
uint16_t maxMemorySpeedInMhz(uint16_t value) override;
std::string manufacturer(std::string value) override;
+ bool present(bool value) override;
std::string serialNumber(std::string value) override;
std::string partNumber(std::string value) override;
+ std::string locationCode(std::string value) override;
uint8_t memoryAttributes(uint8_t value) override;
uint16_t memoryConfiguredSpeedInMhz(uint16_t value) override;
diff --git a/src/dimm.cpp b/src/dimm.cpp
index 346c701..b25b0f8 100644
--- a/src/dimm.cpp
+++ b/src/dimm.cpp
@@ -109,11 +109,11 @@ uint32_t Dimm::memorySizeInKB(uint32_t value)
void Dimm::dimmDeviceLocator(uint8_t positionNum, uint8_t structLen,
uint8_t *dataIn)
{
- std::string result;
-
- result = positionToString(positionNum, structLen, dataIn);
+ std::string result = positionToString(positionNum, structLen, dataIn);
memoryDeviceLocator(result);
+
+ locationCode(result);
}
std::string Dimm::memoryDeviceLocator(std::string value)
@@ -170,11 +170,22 @@ uint16_t Dimm::maxMemorySpeedInMhz(uint16_t value)
void Dimm::dimmManufacturer(uint8_t positionNum, uint8_t structLen,
uint8_t *dataIn)
{
- std::string result;
+ std::string result = positionToString(positionNum, structLen, dataIn);
- result = positionToString(positionNum, structLen, dataIn);
+ bool val = true;
+ if (result == "NO DIMM")
+ {
+ val = false;
+
+ // No dimm presence so making manufacturer value as "" (instead of
+ // NO DIMM - as there won't be any manufacturer for DIMM which is not
+ // present).
+ result = "";
+ }
manufacturer(result);
+ present(val);
+ functional(val);
}
std::string Dimm::manufacturer(std::string value)
@@ -183,6 +194,12 @@ std::string Dimm::manufacturer(std::string value)
Asset::manufacturer(value);
}
+bool Dimm::present(bool value)
+{
+ return sdbusplus::xyz::openbmc_project::Inventory::server::Item::present(
+ value);
+}
+
void Dimm::dimmSerialNum(uint8_t positionNum, uint8_t structLen,
uint8_t *dataIn)
{
@@ -214,6 +231,12 @@ std::string Dimm::partNumber(std::string value)
Asset::partNumber(value);
}
+std::string Dimm::locationCode(std::string value)
+{
+ return sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::
+ LocationCode::locationCode(value);
+}
+
uint8_t Dimm::memoryAttributes(uint8_t value)
{
return sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::