summaryrefslogtreecommitdiffstats
path: root/cooling-type/main.cpp
diff options
context:
space:
mode:
authorBrandon Wyman <bjwyman@gmail.com>2017-03-31 18:13:21 -0500
committerPatrick Williams <patrick@stwcx.xyz>2017-05-19 16:19:06 +0000
commitfef0295a8d87754e491dcf133ea927b5c4d56303 (patch)
tree625df8225e8d9681ff1b5f9afb77104c9e899946 /cooling-type/main.cpp
parentaf5d4c5ec0e07ba7a87ddff3f2066d9b3cbb52f8 (diff)
downloadphosphor-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.cpp75
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
OpenPOWER on IntegriCloud