1*6b492fbfSDeepak Kodihalli #pragma once 2*6b492fbfSDeepak Kodihalli 3*6b492fbfSDeepak Kodihalli #include <string> 4*6b492fbfSDeepak Kodihalli #include <vector> 5*6b492fbfSDeepak Kodihalli #include <sdbusplus/bus.hpp> 6*6b492fbfSDeepak Kodihalli #include <sdbusplus/server/object.hpp> 7*6b492fbfSDeepak Kodihalli #include "org/open_power/OCC/PassThrough/server.hpp" 8*6b492fbfSDeepak Kodihalli #include "config.h" 9*6b492fbfSDeepak Kodihalli 10*6b492fbfSDeepak Kodihalli namespace open_power 11*6b492fbfSDeepak Kodihalli { 12*6b492fbfSDeepak Kodihalli namespace occ 13*6b492fbfSDeepak Kodihalli { 14*6b492fbfSDeepak Kodihalli namespace pass_through 15*6b492fbfSDeepak Kodihalli { 16*6b492fbfSDeepak Kodihalli 17*6b492fbfSDeepak Kodihalli /** @brief Make occ pass-through d-bus object pathname 18*6b492fbfSDeepak Kodihalli * @param[in] occ - occ name 19*6b492fbfSDeepak Kodihalli * @returns occ pass-through path 20*6b492fbfSDeepak Kodihalli */ 21*6b492fbfSDeepak Kodihalli inline auto object(const std::string& occ) 22*6b492fbfSDeepak Kodihalli { 23*6b492fbfSDeepak Kodihalli return std::string(OCC_PASS_THROUGH_ROOT) + 24*6b492fbfSDeepak Kodihalli '/' + 25*6b492fbfSDeepak Kodihalli occ; 26*6b492fbfSDeepak Kodihalli } 27*6b492fbfSDeepak Kodihalli 28*6b492fbfSDeepak Kodihalli /** @brief Put occ pass through objects on the bus 29*6b492fbfSDeepak Kodihalli */ 30*6b492fbfSDeepak Kodihalli void run(); 31*6b492fbfSDeepak Kodihalli 32*6b492fbfSDeepak Kodihalli using Iface = sdbusplus::server::object::object< 33*6b492fbfSDeepak Kodihalli sdbusplus::org::open_power::OCC::server::PassThrough>; 34*6b492fbfSDeepak Kodihalli 35*6b492fbfSDeepak Kodihalli /** @class PassThrough 36*6b492fbfSDeepak Kodihalli * @brief Implements org.open_power.OCC.PassThrough 37*6b492fbfSDeepak Kodihalli */ 38*6b492fbfSDeepak Kodihalli class PassThrough : public Iface 39*6b492fbfSDeepak Kodihalli { 40*6b492fbfSDeepak Kodihalli public: 41*6b492fbfSDeepak Kodihalli PassThrough() = delete; 42*6b492fbfSDeepak Kodihalli PassThrough(const PassThrough&) = delete; 43*6b492fbfSDeepak Kodihalli PassThrough& operator=(const PassThrough&) = delete; 44*6b492fbfSDeepak Kodihalli PassThrough(PassThrough&&) = default; 45*6b492fbfSDeepak Kodihalli PassThrough& operator=(PassThrough&&) = default; 46*6b492fbfSDeepak Kodihalli ~PassThrough() = default; 47*6b492fbfSDeepak Kodihalli 48*6b492fbfSDeepak Kodihalli /** @brief Ctor to put pass-through d-bus object on the bus 49*6b492fbfSDeepak Kodihalli * @param[in] bus - Bus to attach to 50*6b492fbfSDeepak Kodihalli * @param[in] path - Path to attach at 51*6b492fbfSDeepak Kodihalli */ 52*6b492fbfSDeepak Kodihalli PassThrough(sdbusplus::bus::bus& bus, 53*6b492fbfSDeepak Kodihalli const char* path); 54*6b492fbfSDeepak Kodihalli 55*6b492fbfSDeepak Kodihalli /** @brief Pass through command to OCC 56*6b492fbfSDeepak Kodihalli * @param[in] command - command to pass-through 57*6b492fbfSDeepak Kodihalli * @returns OCC response as an array 58*6b492fbfSDeepak Kodihalli */ 59*6b492fbfSDeepak Kodihalli std::vector<std::int32_t> 60*6b492fbfSDeepak Kodihalli send(std::vector<std::int32_t> command) override; 61*6b492fbfSDeepak Kodihalli 62*6b492fbfSDeepak Kodihalli private: 63*6b492fbfSDeepak Kodihalli /** @brief Pass-through occ path on the bus */ 64*6b492fbfSDeepak Kodihalli std::string path; 65*6b492fbfSDeepak Kodihalli }; 66*6b492fbfSDeepak Kodihalli 67*6b492fbfSDeepak Kodihalli } // namespace pass_through 68*6b492fbfSDeepak Kodihalli } // namespace occ 69*6b492fbfSDeepak Kodihalli } // namespace open_power 70