blob: 1b3c5566b334b6fffd363cc48e15252599b3138a [file] [log] [blame]
Andrew Geissler36529022016-11-29 15:23:54 -06001#include <iostream>
Andrew Geissleref3c1842016-12-01 12:33:09 -06002#include <systemd/sd-bus.h>
Andrew Geissler36529022016-11-29 15:23:54 -06003#include "host_state_manager.hpp"
4
5namespace phosphor
6{
7namespace state
8{
9namespace manager
10{
11
Andrew Geissler3e3b84b2016-12-02 15:46:17 -060012// When you see server:: you know we're referencing our base class
13namespace server = sdbusplus::xyz::openbmc_project::State::server;
14
Andrew Geissleref3c1842016-12-01 12:33:09 -060015// TODO - Will be rewritten once sdbusplus client bindings are in place
16// and persistent storage design is in place
17void Host::determineInitialState()
18{
19 std::string sysState;
20
21 auto method = this->bus.new_method_call("org.openbmc.managers.System",
22 "/org/openbmc/managers/System",
23 "org.openbmc.managers.System",
24 "getSystemState");
25
26 auto reply = this->bus.call(method);
27
28 reply.read(sysState);
29
30 if(sysState == "HOST_BOOTED")
31 {
32 std::cout << "HOST is BOOTED " << sysState << std::endl;
Andrew Geissler3e3b84b2016-12-02 15:46:17 -060033 server::Host::currentHostState(HostState::Running);
Andrew Geissleref3c1842016-12-01 12:33:09 -060034 }
35 else
36 {
37 std::cout << "HOST is not BOOTED " << sysState << std::endl;
Andrew Geissler3e3b84b2016-12-02 15:46:17 -060038 server::Host::currentHostState(HostState::Off);
Andrew Geissleref3c1842016-12-01 12:33:09 -060039 }
40
41 // Set transition initially to Off
42 // TODO - Eventually need to restore this from persistent storage
Andrew Geissler3e3b84b2016-12-02 15:46:17 -060043 server::Host::requestedHostTransition(Transition::Off);
Andrew Geissleref3c1842016-12-01 12:33:09 -060044
45 return;
46}
47
48Host::Transition Host::requestedHostTransition(Transition value)
49{
50 std::cout << "Someone is setting the RequestedHostTransition field" <<
Andrew Geissler3e3b84b2016-12-02 15:46:17 -060051 std::endl;
52 return server::Host::requestedHostTransition(value);
Andrew Geissleref3c1842016-12-01 12:33:09 -060053}
54
Andrew Geissleref3c1842016-12-01 12:33:09 -060055Host::HostState Host::currentHostState(HostState value)
56{
57 std::cout << "Someone is being bad and trying to set the HostState field" <<
58 std::endl;
59
Andrew Geissler3e3b84b2016-12-02 15:46:17 -060060 return server::Host::currentHostState();
Andrew Geissleref3c1842016-12-01 12:33:09 -060061}
62
Andrew Geissler36529022016-11-29 15:23:54 -060063} // namespace manager
64} // namespace state
65} // namepsace phosphor