/openbmc/pldm/requester/test/ |
H A D | mctp_endpoint_discovery_test.cpp | 13 auto& bus = pldm::utils::DBusHandler::getBus(); in TEST() 14 pldm::MockManager manager; in TEST() 18 auto mctpDiscoveryHandler = std::make_unique<pldm::MctpDiscovery>( in TEST() 19 bus, std::initializer_list<pldm::MctpDiscoveryHandlerIntf*>{&manager}); in TEST() 25 auto& bus = pldm::utils::DBusHandler::getBus(); in TEST() 26 pldm::MockManager manager1; in TEST() 27 pldm::MockManager manager2; in TEST() 32 auto mctpDiscoveryHandler = std::make_unique<pldm::MctpDiscovery>( in TEST() 33 bus, std::initializer_list<pldm::MctpDiscoveryHandlerIntf*>{ in TEST() 40 auto& bus = pldm::utils::DBusHandler::getBus(); in TEST() [all …]
|
/openbmc/docs/designs/ |
H A D | pldm-stack.md | 1 # PLDM stack on OpenBMC 16 This design aims to employ Platform Level Data Model (PLDM), a standard 17 application layer communication protocol defined by the DMTF. PLDM draws inputs 18 from IPMI, but it overcomes most of the latter's limitations. PLDM is also 21 channels, by defining hardware bindings. The solution of PLDM over MCTP also 24 PLDM's purpose is to enable all sorts of "inside the box communication": BMC - 30 PLDM is designed to be an effective interface and data model that provides 33 fan sensors can have a PLDM representation that can be used to monitor and 34 control the platform using a set of PLDM messages. PLDM defines data 37 PLDM groups commands under broader functions, and defines separate [all …]
|
/openbmc/libpldm/include/libpldm/ |
H A D | base.h | 19 /** @brief PLDM Types 32 /** @brief PLDM Commands 47 /** @brief PLDM base codes 81 /** @brief PLDM transport protocol type 90 * The different message types supported by the PLDM specification. 93 PLDM_RESPONSE, //!< PLDM response 94 PLDM_REQUEST, //!< PLDM request 96 PLDM_ASYNC_REQUEST_NOTIFY, //!< Unacknowledged PLDM request messages 124 /** @brief Minimum length of response for a optional PLDM command 126 * For a optional PLDM command, the command handler might not be [all …]
|
H A D | transport.h | 10 #include <libpldm/pldm.h> 17 * @brief Waits for a PLDM event. 19 * @pre The pldm transport instance must be initialised; otherwise, 34 * @brief Asynchronously send a PLDM message. Control is immediately returned to 37 * @pre The pldm transport instance must be initialised; otherwise, 42 * @param[in] ctx - pldm transport instance 43 * @param[in] tid - destination PLDM TID 44 * @param[in] pldm_msg - caller owned pointer to PLDM msg. If this is NULL, 46 * @param[in] msg_len - size of PLDM msg. If this is less than the minimum size 47 * of a PLDM msg PLDM_REQUESTER_NOT_REQ_MSG is returned. [all …]
|
H A D | pldm.h | 42 * @brief Send a PLDM request message. Wait for corresponding response message, 47 * @param[in] pldm_req_msg - caller owned pointer to PLDM request msg 48 * @param[in] req_msg_len - size of PLDM request msg 49 * @param[out] pldm_resp_msg - *pldm_resp_msg will point to PLDM response msg, 53 * the size of the PLDM response msg. 63 * @brief Send a PLDM request message, don't wait for response. Essentially an 70 * @param[in] pldm_req_msg - caller owned pointer to PLDM request msg 71 * @param[in] req_msg_len - size of PLDM request msg 80 * data is a PLDM response message that matches eid and instance_id. 84 * @param[in] instance_id - PLDM instance id of previously sent PLDM request msg [all …]
|
/openbmc/pldm/pldmtool/ |
H A D | README.md | 3 pldmtool is a client tool that acts as a PLDM requester which runs on the BMC. 8 pldmtool supports the subcommands for PLDM types such as base, platform, bios, 12 - Consumes pldm/libpldm encode and decode functions. 14 - Enables writing functional test cases for PLDM stack. 16 please refer the [DMTF PLDM specifications](https://www.dmtf.org/) with respect 17 to the pldm types. 21 Source files in pldmtool repository are named with respect to the PLDM type. 29 pldmtool commands for corresponding PLDM type is constructed with the help of 30 encode request and decode response APIs which are implemented in pldm/libpldm. 34 Given a PLDM command "foo" of PLDM type "base" the pldmtool should consume [all …]
|
/openbmc/pldm/ |
H A D | README.md | 1 # PLDM - Platform Level Data Model 7 PLDM (Platform Level Data Model) is a key component of the OpenBMC project, 12 The OpenBMC PLDM project aims to implement the specifications defined by the 18 - **Standardized Messaging:** Adheres to the DMTF's PLDM specifications, 21 - **Modularity:** Supports multiple PLDM types, including base, FRU,Firmware 23 - **Extensibility:** Easily extendable to support new PLDM types and custom OEM 32 To build and run PLDM, you need the following dependencies: 41 To build the PLDM project, follow these steps: 59 ### To enable pldm verbosity 61 pldm daemon accepts a command line argument `--verbose` or `--v` or `-v` to [all …]
|
H A D | meson.options | 1 # PLDM daemon options 37 # As per PLDM spec DSP0240 version 1.1.0, in Timing Specification for PLDM messages (Table 6), 40 # value to 5 seconds we ensure that PLDM does not wait for a response from a dbus call even after 42 # PLDM daemon will timeout after 5 seconds. 49 description: '''The amount of time pldm waits to get a response for a dbus 61 # Flight Recorder for PLDM Daemon 68 description: '''The max number of pldm messages that can be stored in the 72 # PLDM Daemon Terminus options 80 pldm stack''' 90 pldm stack''' [all …]
|
/openbmc/openbmc-test-automation/pldm/ |
H A D | test_pldm_base.robot | 3 Documentation Module to test PLDM base commands. 14 Verify Get PLDM Types 15 [Documentation] Verify supported PLDM types. 22 ${cmd}= Catenate ${pldm_output}[${i}][PLDM Type Code](${pldm_output}[${i}][PLDM Type]) 27 Verify Get PLDM Version For Base 28 [Documentation] Verify supported PLDM version for base type. 35 Verify Get PLDM Version For Platform 36 [Documentation] Verify supported PLDM version for platform type. 44 Verify Get PLDM Version For BIOS 45 [Documentation] Verify supported PLDM version for BIOS type. [all …]
|
/openbmc/pldm/requester/ |
H A D | README.md | 3 PLDM requester infrastructure enables the requester code in PLDM daemon to meet 4 the requirements of PLDM requesters. It provides the following features: 6 - Register a PLDM request and the response handler to be invoked on receiving 8 - The handling of the request and response is asynchronous. This means the PLDM 17 - Handle ERROR_NOT_READY completion code and retry the PLDM request after 250ms 20 The requester code needs to use the `registerRequest` API to register the PLDM 21 request. The destination endpoint ID, instance ID, PLDM type, PLDM command code, 22 PLDM request message (PLDM header and payload) and response function handler are 27 uint8_t command, pldm::Request&& requestMsg, 40 - If the response does not match with the PLDM instance ID, PLDM type and PLDM
|
H A D | request.hpp | 21 namespace pldm namespace 27 * The abstract base class for implementing the PLDM request retry logic. This 28 * class handles number of times the PLDM request needs to be retried if the 44 * @param[in] event - reference to PLDM daemon's main event loop 97 sdeventplus::Event& event; //!< reference to PLDM daemon's main event loop 103 /** @brief Sends the PLDM request message 126 * to send the PLDM request message over MCTP socket. 127 * This class encapsulates the PLDM request message, the number of times the 144 * @param[in] pldm_transport - PLDM transport object 147 * @param[in] event - reference to PLDM daemon's main event loop [all …]
|
/openbmc/pldm/platform-mc/ |
H A D | event_manager.cpp | 16 namespace pldm namespace 34 /* EventClass sensorEvent `Table 11 - PLDM Event Types` DSP0248 */ in handlePlatformEvent() 70 /* EventClass CPEREvent as `Table 11 - PLDM Event Types` DSP0248 V1.3.0 */ in handlePlatformEvent() 76 /* EventClass pldmMessagePollEvent `Table 11 - PLDM Event Types` DSP0248 */ in handlePlatformEvent() 162 sensor->triggerThresholdEvent(pldm::utils::Level::WARNING, in processNumericSensorEvent() 163 pldm::utils::Direction::HIGH, in processNumericSensorEvent() 166 pldm::utils::Level::CRITICAL, in processNumericSensorEvent() 167 pldm::utils::Direction::HIGH, value, true, true); in processNumericSensorEvent() 172 pldm::utils::Level::WARNING, in processNumericSensorEvent() 173 pldm::utils::Direction::HIGH, value, true, true); in processNumericSensorEvent() [all …]
|
H A D | terminus_manager.hpp | 6 #include "libpldm/pldm.h" 20 namespace pldm namespace 42 * TerminusManager class to discover and initialize PLDM terminus. 56 pldm::InstanceIdDb& instanceIdDb, TerminiMapper& termini, in TerminusManager() 78 /** @brief Send request PLDM message to tid. The function will return when 84 * @param[in] request - request PLDM message 85 * @param[out] responseMsg - response PLDM message 86 * @param[out] responseLen - length of response PLDM message 87 * @return coroutine return_value - PLDM completion code 93 /** @brief Send request PLDM message to eid. The function will [all …]
|
/openbmc/pldm/softoff/ |
H A D | softoff.cpp | 24 namespace pldm namespace 36 pldm::pdr::TerminusID TID = 0; 41 pldm::InstanceIdDb& instanceIdDb) : in SoftPowerOff() 62 pldm::pdr::EntityType entityType = entry.value("entityType", 0); in SoftPowerOff() 63 pldm::pdr::StateSetId stateSetId = entry.value("stateSetId", 0); in SoftPowerOff() 84 // Matches on the pldm StateSensorEvent signal in SoftPowerOff() 88 sdbusRule::path("/xyz/openbmc_project/pldm") + in SoftPowerOff() 89 sdbusRule::interface("xyz.openbmc_project.PLDM.Event"), in SoftPowerOff() 98 pldm::utils::PropertyValue propertyValue = in getHostState() 99 pldm::utils::DBusHandler().getDbusPropertyVariant( in getHostState() [all …]
|
/openbmc/pldm/host-bmc/ |
H A D | dbus_to_event_handler.hpp | 11 namespace pldm namespace 16 std::map<SensorId, std::tuple<pldm::responder::pdr_utils::DbusMappings, 17 pldm::responder::pdr_utils::DbusValMaps>>; 21 std::map<pldm::pdr::SensorID, pldm::responder::pdr_utils::EventStates>; 26 * @brief This class can listen to the state sensor PDRs and send PLDM event 43 * @param[in] handler - PLDM request handler 46 int mctp_fd, uint8_t mctp_eid, pldm::InstanceIdDb& instanceIdDb, 47 pldm::requester::Handler<pldm::requester::Request>* handler); 54 void listenSensorEvent(const pldm::responder::pdr_utils::Repo& repo, 68 inline void updateSensorCacheMaps(pldm::pdr::SensorID sensorId, in updateSensorCacheMaps() [all …]
|
/openbmc/pldm/libpldmresponder/ |
H A D | fru_parser.hpp | 11 namespace pldm namespace 48 std::tuple<pldm::responder::dbus::Service, pldm::responder::dbus::RootPath, 49 pldm::responder::dbus::Interfaces>; 51 pldm::responder::dbus::Interface, pldm::responder::dbus::Property, 52 pldm::responder::dbus::PropertyType, pldm::responder::fru::FieldType>; 55 std::tuple<pldm::responder::fru::RecordType, 56 pldm::responder::fru::EncodingType, std::vector<FieldInfo>>; 64 * @brief Parses the PLDM FRU configuration files to populate the data 66 * inventory information into PLDM FRU Record. 90 /** @brief Get the information need to create PLDM FRU records for a [all …]
|
H A D | platform.hpp | 25 namespace pldm namespace 32 const pldm::utils::DBusHandler& dBusIntf, const pldm::utils::Json& json, 52 Handler(const pldm::utils::DBusHandler* dBusIntf, uint8_t eid, in Handler() 53 pldm::InstanceIdDb* instanceIdDb, const fs::path& pdrJsonDir, in Handler() 55 pldm::state_sensor::DbusToPLDMEvent* dbusToPLDMEventHandler, in Handler() 57 pldm::responder::platform_config::Handler* platformConfigHandler, in Handler() 58 pldm::requester::Handler<pldm::requester::Request>* handler, in Handler() 106 // Default handler for PLDM Events 121 // Additional OEM event handlers for PLDM events, append it to the 161 pldm::responder::pdr_utils::TypeId typeId = [all …]
|
/openbmc/phosphor-dbus-interfaces/yaml/xyz/openbmc_project/PLDM/ |
H A D | Requester.interface.yaml | 2 Implement to provide features needed to build a PLDM Request message. This 3 API would be used by PLDM requester apps on the BMC. 6 xyz.openbmc_project.PLDM.Requester on /xyz/openbmc_project/pldm. 8 PLDM stands for Platform Level Data Model. More information about PLDM (and 14 Obtain a new PLDM instance id, for the input MCTP EID, to be used in a 15 PLDM request message. Instance ids help distinguish PLDM response 16 messages when a PLDM requester sends out multiple request messages, 17 without waiting for a response message. Refer the PLDM specification 19 https://github.com/openbmc/docs/blob/master/designs/pldm-stack.md#Requester. 22 EID that a PLDM requester is communicating with. An implementation of [all …]
|
H A D | Event.interface.yaml | 2 Implement to emit D-Bus signal for PLDM Event Messages. PLDM Event Messages 3 are PLDM monitoring and control messages that are used by a PLDM terminus to 4 synchronously or asynchronously report PLDM events to a central party called 5 the PLDM Event Receiver. 7 When the PLDM daemon receives a sensorEvent of type stateSensorState, it 10 This signal would be used by PLDM Requester apps on the BMC, which will rely 11 on this signal to determine state changes on a connected PLDM entity. 13 More information about PLDM Event Messages can be found at DSP0248 version 31 The sensorID is the value that is used in PDRs and PLDM sensor
|
/openbmc/pldm/pldmd/ |
H A D | invoker.hpp | 10 namespace pldm namespace 21 /** @brief Register a handler for a PLDM Type 23 * @param[in] pldmType - PLDM type code 24 * @param[in] handler - PLDM Type handler 31 /** @brief Invoke a PLDM command handler 33 * @param[in] tid - PLDM request TID 34 * @param[in] pldmType - PLDM type code 35 * @param[in] pldmCommand - PLDM command code 36 * @param[in] request - PLDM request message 37 * @param[in] reqMsgLen - PLDM request message size [all …]
|
H A D | oem_ibm.hpp | 18 namespace pldm namespace 23 using namespace pldm::state_sensor; 24 using namespace pldm::dbus_api; 59 const pldm::utils::DBusHandler* dBusIntf, int mctp_fd, uint8_t mctp_eid, in OemIBM() 60 pldm_pdr* repo, pldm::InstanceIdDb& instanceIdDb, in OemIBM() 66 pldm::requester::Handler<pldm::requester::Request>* reqHandler) : in OemIBM() 100 codeUpdate = std::make_unique<pldm::responder::CodeUpdate>(dBusIntf); in createCodeUpdate() 108 std::make_unique<pldm::responder::SlotHandler>(event, repo); in createSlotHandler() 127 dynamic_cast<pldm::responder::oem_ibm_platform::Handler*>( in createOemIbmPlatformHandler() 147 oemIbmFruHandler = dynamic_cast<pldm::responder::oem_ibm_fru::Handler*>( in createOemIbmFruHandler() [all …]
|
/openbmc/pldm/oem/ibm/libpldmresponder/ |
H A D | oem_ibm_handler.hpp | 21 namespace pldm namespace 37 const pldm::pdr::TerminusID HYPERVISOR_TID = 208; 49 Handler(const pldm::utils::DBusHandler* dBusIntf, in Handler() 50 pldm::responder::CodeUpdate* codeUpdate, in Handler() 51 pldm::responder::SlotHandler* slotHandler, int mctp_fd, in Handler() 52 uint8_t mctp_eid, pldm::InstanceIdDb& instanceIdDb, in Handler() 54 pldm::requester::Handler<pldm::requester::Request>* handler) : in Handler() 68 pldm::utils::DBusHandler::getBus(), in Handler() 72 pldm::utils::DbusChangedProps props{}; in Handler() 78 pldm::utils::PropertyValue value = itr->second; in Handler() [all …]
|
H A D | file_io.hpp | 26 namespace pldm namespace 84 * @param[in] command - PLDM command 92 * @return PLDM response message 125 pldm::utils::CustomFD fd(file); in transferAll() 165 "xyz.openbmc_project.PLDM.Provider.Certs.Authority.CSR"; 170 uint8_t hostEid, pldm::InstanceIdDb* instanceIdDb, in Handler() 171 pldm::requester::Handler<pldm::requester::Request>* handler) : in Handler() 236 pldm::utils::DBusHandler::getBus(), in Handler() 269 std::make_unique<pldm::requester::oem_ibm:: in Handler() 279 pldm::utils::DBusHandler::getBus(), in Handler() [all …]
|
/openbmc/openpower-occ-control/ |
H A D | pldm.hpp | 8 #include <libpldm/pldm.h> 25 namespace pldm namespace 54 * @brief Abstracts the PLDM details related to the OCC 66 /** @brief Constructs the PLDM Interface object for OCC functions 86 MatchRules::path("/xyz/openbmc_project/pldm") + in Interface() 87 MatchRules::interface("xyz.openbmc_project.PLDM.Event"), in Interface() 148 * @return PLDM request message to be sent to host for OCC reset or SBE 155 /** @brief Send the PLDM message to reset the OCC 162 /** @brief Send the PLDM message to perform the HRESET 183 /** @brief PLDM instance ID database object used to get instance IDs [all …]
|
/openbmc/pldm/fw-update/ |
H A D | manager.hpp | 15 namespace pldm namespace 23 * This class handles all the aspects of the PLDM FW update specification for 26 class Manager : public pldm::MctpDiscoveryHandlerIntf 38 * @param[in] handler - PLDM request handler 42 pldm::InstanceIdDb& instanceIdDb) : in Manager() 74 /** @brief Handle PLDM request for the commands in the FW update 78 * @param[in] command - PLDM command code 79 * @param[in] request - PLDM request message 80 * @param[in] requestLen - PLDM request message length 81 * @return PLDM response message [all …]
|