diff options
author | Brandon Wyman <bjwyman@gmail.com> | 2017-03-31 18:13:21 -0500 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2017-05-19 16:19:06 +0000 |
commit | fef0295a8d87754e491dcf133ea927b5c4d56303 (patch) | |
tree | 625df8225e8d9681ff1b5f9afb77104c9e899946 /cooling-type/main.cpp | |
parent | af5d4c5ec0e07ba7a87ddff3f2066d9b3cbb52f8 (diff) | |
download | phosphor-fan-presence-fef0295a8d87754e491dcf133ea927b5c4d56303.tar.gz phosphor-fan-presence-fef0295a8d87754e491dcf133ea927b5c4d56303.zip |
Fill in shell functions/files for cooling type.
Change-Id: I8d18d3141e955adeffdd8122ebb17549c88edd77
Signed-off-by: Brandon Wyman <bjwyman@gmail.com>
Diffstat (limited to 'cooling-type/main.cpp')
-rw-r--r-- | cooling-type/main.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/cooling-type/main.cpp b/cooling-type/main.cpp new file mode 100644 index 0000000..cddbe31 --- /dev/null +++ b/cooling-type/main.cpp @@ -0,0 +1,75 @@ +#include <iostream> +#include <memory> //make_unique +#include <sdbusplus/bus.hpp> +#include <phosphor-logging/log.hpp> +#include "argument.hpp" +#include "cooling_type.hpp" + +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; + auto options = ArgumentParser(argc, argv); + + auto objpath = (options)["path"]; + if (argc < 2) + { + std::cerr << std::endl << "Too few arguments" << std::endl; + log<level::ERR>("Too few arguments"); + options.usage(argv); + } + else if (objpath == ArgumentParser::empty_string) + { + log<level::ERR>("Bus path argument required"); + } + else + { + auto bus = sdbusplus::bus::new_default(); + CoolingType coolingType(bus); + + auto gpiopin = (options)["gpio"]; + if (gpiopin != ArgumentParser::empty_string) + { + try + { + auto gpiopath = findGpio(gpiopin); + coolingType.setupGpio(gpiopath); + } + catch (std::exception& err) + { + rc = -1; + log<phosphor::logging::level::ERR>(err.what()); + } + } + + auto air = (options)["air"]; + if (air != ArgumentParser::empty_string) + { + coolingType.setAirCooled(); + } + + auto water = (options)["water"]; + if (water != ArgumentParser::empty_string) + { + coolingType.setWaterCooled(); + } + + coolingType.updateInventory(objpath); + + rc = 0; + } + + return rc; +} + +// vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 |