diff options
author | Brandon Wyman <bjwyman@gmail.com> | 2017-04-10 17:48:02 -0500 |
---|---|---|
committer | Brandon Wyman <bjwyman@gmail.com> | 2017-05-22 14:35:51 -0500 |
commit | ce822444460a6aef6538c36b9c74023c33e2fcae (patch) | |
tree | 7301de7ecab9828785dd534b20325c9049de982a /cooling-type/main.cpp | |
parent | 8798854f0aab767edb8798fb014de5b4b9f7fae2 (diff) | |
download | phosphor-fan-presence-ce822444460a6aef6538c36b9c74023c33e2fcae.tar.gz phosphor-fan-presence-ce822444460a6aef6538c36b9c74023c33e2fcae.zip |
Implement changes to read GPIO device for cooling type.
Change-Id: If40a54510fb05d67ee0bfdf24026c1d7470897ca
Signed-off-by: Brandon Wyman <bjwyman@gmail.com>
Diffstat (limited to 'cooling-type/main.cpp')
-rw-r--r-- | cooling-type/main.cpp | 56 |
1 files changed, 29 insertions, 27 deletions
diff --git a/cooling-type/main.cpp b/cooling-type/main.cpp index 91934ea..caa4e88 100644 --- a/cooling-type/main.cpp +++ b/cooling-type/main.cpp @@ -8,14 +8,6 @@ using namespace phosphor::cooling::type; using namespace phosphor::logging; -// Utility function to find the device string for a given pin name. -std::string findGpio(std::string pinName) -{ - std::string path = "/dev/null"; - //TODO - return path; -} - int main(int argc, char* argv[]) { auto rc = -1; @@ -37,36 +29,46 @@ int main(int argc, char* argv[]) auto bus = sdbusplus::bus::new_default(); CoolingType coolingType(bus); - auto gpiopin = (options)["gpio"]; - if (gpiopin != ArgumentParser::empty_string) + try { - try + auto air = (options)["air"]; + if (air != ArgumentParser::empty_string) { - auto gpiopath = findGpio(gpiopin); - coolingType.setupGpio(gpiopath); + coolingType.setAirCooled(); } - catch (std::exception& err) + + auto water = (options)["water"]; + if (water != ArgumentParser::empty_string) { - rc = -1; - log<phosphor::logging::level::ERR>(err.what()); + coolingType.setWaterCooled(); } - } - auto air = (options)["air"]; - if (air != ArgumentParser::empty_string) - { - coolingType.setAirCooled(); + auto gpiopath = (options)["dev"]; + if (gpiopath != ArgumentParser::empty_string) + { + auto keycode = (options)["event"]; + if (keycode != ArgumentParser::empty_string) + { + auto gpiocode = std::stoul(keycode); + coolingType.readGpio(gpiopath, gpiocode); + } + else + { + log<level::ERR>("--event=<keycode> argument required\n"); + exit(-1); + } + } + + coolingType.updateInventory(objpath); + rc = 0; } - auto water = (options)["water"]; - if (water != ArgumentParser::empty_string) + catch (std::exception& err) { - coolingType.setWaterCooled(); + rc = -1; + log<phosphor::logging::level::ERR>(err.what()); } - coolingType.updateInventory(objpath); - - rc = 0; } return rc; |