1d82a3acdSCarol Wang #pragma once 2d82a3acdSCarol Wang 37e860f15SJohn Edward Broadbent #include <app.hpp> 4ed398213SEd Tanous #include <registries/privilege_registry.hpp> 572d566d9SGunnar Mills #include <utils/fw_utils.hpp> 6d82a3acdSCarol Wang namespace redfish 7d82a3acdSCarol Wang { 8d82a3acdSCarol Wang /** 9d82a3acdSCarol Wang * BiosService class supports handle get method for bios. 10d82a3acdSCarol Wang */ 1158eaf5f0SJohn Edward Broadbent inline void 1258eaf5f0SJohn Edward Broadbent handleBiosServiceGet(const crow::Request&, 1358eaf5f0SJohn Edward Broadbent const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) 1458eaf5f0SJohn Edward Broadbent { 1558eaf5f0SJohn Edward Broadbent asyncResp->res.jsonValue["@odata.id"] = "/redfish/v1/Systems/system/Bios"; 1658eaf5f0SJohn Edward Broadbent asyncResp->res.jsonValue["@odata.type"] = "#Bios.v1_1_0.Bios"; 1758eaf5f0SJohn Edward Broadbent asyncResp->res.jsonValue["Name"] = "BIOS Configuration"; 1858eaf5f0SJohn Edward Broadbent asyncResp->res.jsonValue["Description"] = "BIOS Configuration Service"; 1958eaf5f0SJohn Edward Broadbent asyncResp->res.jsonValue["Id"] = "BIOS"; 2058eaf5f0SJohn Edward Broadbent asyncResp->res.jsonValue["Actions"]["#Bios.ResetBios"] = { 2158eaf5f0SJohn Edward Broadbent {"target", "/redfish/v1/Systems/system/Bios/Actions/Bios.ResetBios"}}; 2258eaf5f0SJohn Edward Broadbent 2358eaf5f0SJohn Edward Broadbent // Get the ActiveSoftwareImage and SoftwareImages 2458eaf5f0SJohn Edward Broadbent fw_util::populateFirmwareInformation(asyncResp, fw_util::biosPurpose, "", 2558eaf5f0SJohn Edward Broadbent true); 2658eaf5f0SJohn Edward Broadbent } 277e860f15SJohn Edward Broadbent inline void requestRoutesBiosService(App& app) 28d82a3acdSCarol Wang { 297e860f15SJohn Edward Broadbent BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/Bios/") 30ed398213SEd Tanous .privileges(redfish::privileges::getBios) 3158eaf5f0SJohn Edward Broadbent .methods(boost::beast::http::verb::get)(handleBiosServiceGet); 32d82a3acdSCarol Wang } 3358eaf5f0SJohn Edward Broadbent 34d82a3acdSCarol Wang /** 35d82a3acdSCarol Wang * BiosReset class supports handle POST method for Reset bios. 36d82a3acdSCarol Wang * The class retrieves and sends data directly to D-Bus. 377e860f15SJohn Edward Broadbent * 38d82a3acdSCarol Wang * Function handles POST method request. 39d82a3acdSCarol Wang * Analyzes POST body message before sends Reset request data to D-Bus. 40d82a3acdSCarol Wang */ 4158eaf5f0SJohn Edward Broadbent inline void 4258eaf5f0SJohn Edward Broadbent handleBiosResetPost(const crow::Request&, 4358eaf5f0SJohn Edward Broadbent const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) 447e860f15SJohn Edward Broadbent { 45d82a3acdSCarol Wang crow::connections::systemBus->async_method_call( 46d82a3acdSCarol Wang [asyncResp](const boost::system::error_code ec) { 47d82a3acdSCarol Wang if (ec) 48d82a3acdSCarol Wang { 49d82a3acdSCarol Wang BMCWEB_LOG_ERROR << "Failed to reset bios: " << ec; 50d82a3acdSCarol Wang messages::internalError(asyncResp->res); 51d82a3acdSCarol Wang return; 52d82a3acdSCarol Wang } 53d82a3acdSCarol Wang }, 5458eaf5f0SJohn Edward Broadbent "org.open_power.Software.Host.Updater", "/xyz/openbmc_project/software", 55d82a3acdSCarol Wang "xyz.openbmc_project.Common.FactoryReset", "Reset"); 56d82a3acdSCarol Wang } 5758eaf5f0SJohn Edward Broadbent 5858eaf5f0SJohn Edward Broadbent inline void requestRoutesBiosReset(App& app) 5958eaf5f0SJohn Edward Broadbent { 6058eaf5f0SJohn Edward Broadbent BMCWEB_ROUTE(app, "/redfish/v1/Systems/system/Bios/Actions/Bios.ResetBios/") 61*b7ff3445SJohn Edward Broadbent .privileges(redfish::privileges::postBios) 6258eaf5f0SJohn Edward Broadbent .methods(boost::beast::http::verb::post)(handleBiosResetPost); 6358eaf5f0SJohn Edward Broadbent } 6458eaf5f0SJohn Edward Broadbent 65d82a3acdSCarol Wang } // namespace redfish 66