summaryrefslogtreecommitdiffstats
path: root/cooling-type/main.cpp
diff options
context:
space:
mode:
authorBrandon Wyman <bjwyman@gmail.com>2017-04-10 17:48:02 -0500
committerBrandon Wyman <bjwyman@gmail.com>2017-05-22 14:35:51 -0500
commitce822444460a6aef6538c36b9c74023c33e2fcae (patch)
tree7301de7ecab9828785dd534b20325c9049de982a /cooling-type/main.cpp
parent8798854f0aab767edb8798fb014de5b4b9f7fae2 (diff)
downloadphosphor-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.cpp56
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;
OpenPOWER on IntegriCloud