diff --git a/host-bmc/host_condition.cpp b/host-bmc/host_condition.cpp
new file mode 100644
index 0000000..2bdcb36
--- /dev/null
+++ b/host-bmc/host_condition.cpp
@@ -0,0 +1,24 @@
+#include "host_condition.hpp"
+
+namespace pldm
+{
+namespace dbus_api
+{
+
+Host::FirmwareCondition Host::currentFirmwareCondition() const
+{
+    bool hostRunning = false;
+
+    if (hostPdrObj != nullptr)
+    {
+        hostRunning = hostPdrObj.get()->isHostUp();
+    }
+
+    auto value = hostRunning ? Host::FirmwareCondition::Running
+                             : Host::FirmwareCondition::Off;
+
+    return value;
+}
+
+} // namespace dbus_api
+} // namespace pldm
diff --git a/host-bmc/host_condition.hpp b/host-bmc/host_condition.hpp
new file mode 100644
index 0000000..6ea9978
--- /dev/null
+++ b/host-bmc/host_condition.hpp
@@ -0,0 +1,43 @@
+#pragma once
+
+#include "host-bmc/host_pdr_handler.hpp"
+
+#include <sdbusplus/bus.hpp>
+#include <sdbusplus/server/object.hpp>
+#include <xyz/openbmc_project/Condition/HostFirmware/server.hpp>
+
+namespace pldm
+{
+namespace dbus_api
+{
+
+using HostIntf = sdbusplus::server::object::object<
+    sdbusplus::xyz::openbmc_project::Condition::server::HostFirmware>;
+
+class Host : public HostIntf
+{
+  public:
+    Host() = delete;
+    Host(const Host&) = delete;
+    Host& operator=(const Host&) = delete;
+    Host(Host&&) = delete;
+    Host& operator=(Host&&) = delete;
+    virtual ~Host() = default;
+
+    Host(sdbusplus::bus::bus& bus, const std::string& path) :
+        HostIntf(bus, path.c_str()){};
+
+    /** @brief Override reads to CurrentFirmwareCondition */
+    FirmwareCondition currentFirmwareCondition() const override;
+
+    /** @brief Store shared pointer to host PDR instance */
+    void setHostPdrObj(std::shared_ptr<HostPDRHandler> obj)
+    {
+        hostPdrObj = obj;
+    }
+
+  private:
+    std::shared_ptr<HostPDRHandler> hostPdrObj;
+};
+} // namespace dbus_api
+} // namespace pldm
