| /* |
| // Copyright (c) 2018 Intel Corporation |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| */ |
| |
| #pragma once |
| #include "smbios_mdrv2.hpp" |
| |
| #include <xyz/openbmc_project/Common/UUID/server.hpp> |
| #include <xyz/openbmc_project/Inventory/Decorator/Revision/server.hpp> |
| |
| namespace phosphor |
| { |
| |
| namespace smbios |
| { |
| |
| class System : |
| sdbusplus::server::object_t< |
| sdbusplus::server::xyz::openbmc_project::common::UUID>, |
| sdbusplus::server::object_t< |
| sdbusplus::server::xyz::openbmc_project::inventory::decorator::Revision> |
| { |
| public: |
| System() = delete; |
| ~System() = default; |
| System(const System&) = delete; |
| System& operator=(const System&) = delete; |
| System(System&&) = default; |
| System& operator=(System&&) = default; |
| |
| System(sdbusplus::bus_t& bus, const std::string& objPath, |
| uint8_t* smbiosTableStorage) : |
| sdbusplus::server::object_t< |
| sdbusplus::server::xyz::openbmc_project::common::UUID>( |
| bus, objPath.c_str()), |
| bus(bus), |
| sdbusplus::server::object_t<sdbusplus::server::xyz::openbmc_project:: |
| inventory::decorator::Revision>( |
| bus, objPath.c_str()), |
| path(objPath), storage(smbiosTableStorage) |
| { |
| std::string input = "0"; |
| uuid(input); |
| version("0.00"); |
| } |
| |
| std::string uuid(std::string value) override; |
| |
| std::string version(std::string value) override; |
| sdbusplus::bus_t& bus; |
| |
| private: |
| /** @brief Path of the group instance */ |
| std::string path; |
| |
| uint8_t* storage; |
| |
| struct BIOSInfo |
| { |
| uint8_t type; |
| uint8_t length; |
| uint16_t handle; |
| uint8_t vendor; |
| uint8_t biosVersion; |
| uint16_t startAddrSegment; |
| uint8_t releaseData; |
| uint8_t romSize; |
| uint64_t characteristics; |
| uint16_t externCharacteristics; |
| uint8_t systemBIOSMajor; |
| uint8_t systemBIOSMinor; |
| uint8_t embeddedFirmwareMajor; |
| uint8_t embeddedFirmwareMinor; |
| } __attribute__((packed)); |
| |
| struct UUID |
| { |
| uint32_t timeLow; |
| uint16_t timeMid; |
| uint16_t timeHiAndVer; |
| uint8_t clockSeqHi; |
| uint8_t clockSeqLow; |
| uint8_t node[6]; |
| } __attribute__((packed)); |
| |
| struct SystemInfo |
| { |
| uint8_t type; |
| uint8_t length; |
| uint16_t handle; |
| uint8_t manufacturer; |
| uint8_t productName; |
| uint8_t version; |
| uint8_t serialNum; |
| struct UUID uuid; |
| uint8_t wakeupType; |
| uint8_t skuNum; |
| uint8_t family; |
| } __attribute__((packed)); |
| }; |
| |
| } // namespace smbios |
| |
| } // namespace phosphor |