Implement org.open_power.OCC.PassThrough
This d-bus interface is implemented by the
open_power::occ::pass_through::PassThrough class.
Change-Id: I6bce9e609b7b977418bcfee15e97432cb7d9e6b3
Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
diff --git a/occ_pass_through.hpp b/occ_pass_through.hpp
new file mode 100644
index 0000000..835241f
--- /dev/null
+++ b/occ_pass_through.hpp
@@ -0,0 +1,69 @@
+#pragma once
+
+#include <string>
+#include <vector>
+#include <sdbusplus/bus.hpp>
+#include <sdbusplus/server/object.hpp>
+#include "org/open_power/OCC/PassThrough/server.hpp"
+#include "config.h"
+
+namespace open_power
+{
+namespace occ
+{
+namespace pass_through
+{
+
+/** @brief Make occ pass-through d-bus object pathname
+ * @param[in] occ - occ name
+ * @returns occ pass-through path
+ */
+inline auto object(const std::string& occ)
+{
+ return std::string(OCC_PASS_THROUGH_ROOT) +
+ '/' +
+ occ;
+}
+
+/** @brief Put occ pass through objects on the bus
+ */
+void run();
+
+using Iface = sdbusplus::server::object::object<
+ sdbusplus::org::open_power::OCC::server::PassThrough>;
+
+/** @class PassThrough
+ * @brief Implements org.open_power.OCC.PassThrough
+ */
+class PassThrough : public Iface
+{
+ public:
+ PassThrough() = delete;
+ PassThrough(const PassThrough&) = delete;
+ PassThrough& operator=(const PassThrough&) = delete;
+ PassThrough(PassThrough&&) = default;
+ PassThrough& operator=(PassThrough&&) = default;
+ ~PassThrough() = default;
+
+ /** @brief Ctor to put pass-through d-bus object on the bus
+ * @param[in] bus - Bus to attach to
+ * @param[in] path - Path to attach at
+ */
+ PassThrough(sdbusplus::bus::bus& bus,
+ const char* path);
+
+ /** @brief Pass through command to OCC
+ * @param[in] command - command to pass-through
+ * @returns OCC response as an array
+ */
+ std::vector<std::int32_t>
+ send(std::vector<std::int32_t> command) override;
+
+ private:
+ /** @brief Pass-through occ path on the bus */
+ std::string path;
+};
+
+} // namespace pass_through
+} // namespace occ
+} // namespace open_power