diff options
author | Andrew Jeffery <andrew@aj.id.au> | 2018-05-24 13:34:05 +0930 |
---|---|---|
committer | Andrew Jeffery <andrew@aj.id.au> | 2019-04-08 13:48:02 +0930 |
commit | 42e02d34113534c2e98dfd321fa79671fa7e1d20 (patch) | |
tree | 8b21eb3c30f92a56599bb2d49474f57da49587d6 /physical.hpp | |
parent | e185efb810f0befb26276c776d71ed8e56059a1a (diff) | |
download | phosphor-led-sysfs-42e02d34113534c2e98dfd321fa79671fa7e1d20.tar.gz phosphor-led-sysfs-42e02d34113534c2e98dfd321fa79671fa7e1d20.zip |
sysfs: Integrate class into Physical and tests
Change-Id: I7d5ad19df5ef1258a4e669ea3243b7411f371d9c
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Diffstat (limited to 'physical.hpp')
-rw-r--r-- | physical.hpp | 99 |
1 files changed, 9 insertions, 90 deletions
diff --git a/physical.hpp b/physical.hpp index 47ad7d5..c8ef4fd 100644 --- a/physical.hpp +++ b/physical.hpp @@ -1,50 +1,22 @@ #pragma once +#include "sysfs.hpp" + #include <fstream> #include <sdbusplus/bus.hpp> #include <sdbusplus/server/object.hpp> #include <string> #include <xyz/openbmc_project/Led/Physical/server.hpp> + namespace phosphor { namespace led { -/** @brief Acts as input and output file for the current LED power state. - * Write "0" to trigger a LED OFF operation. - * Write "255" to trigger a LED ON operation. - * To know the current power state of the LED, a read on this - * would give either 0 or 255 indicating if the LED is currently - * Off / On AT THAT moment. - * Example: /sys/class/leds/myled/brightness - */ -constexpr auto BRIGHTNESS = "/brightness"; - /** @brief Assert LED by writing 255 */ -constexpr auto ASSERT = "255"; +constexpr auto ASSERT = 255; /** @brief De-assert by writing "0" */ -constexpr auto DEASSERT = "0"; - -/** @brief Write "timer" to this file telling the driver that - * the intended operation is BLINK. When the value "timer" is written to - * the file, 2 more files get auto generated and are named "delay_on" and - * "delay_off" - * To move away from blinking, write "none" - * Example: /sys/class/leds/myled/trigger - */ -constexpr auto BLINKCTRL = "/trigger"; - -/** @brief write number of milliseconds that the LED needs to be ON - * while blinking. Default is 500 by the driver. - * Example: /sys/class/leds/myled/delay_on - */ -constexpr auto DELAYON = "/delay_on"; - -/** @brief Write number of milliseconds that the LED needs to be OFF - * while blinking. Default is 500 by the driver. - * Example: /sys/class/leds/myled/delay_off - */ -constexpr auto DELAYOFF = "/delay_off"; +constexpr auto DEASSERT = 0; /** @class Physical * @brief Responsible for applying actions on a particular physical LED @@ -70,12 +42,12 @@ class Physical : public sdbusplus::server::object::object< * @param[in] ledPath - sysfs path where this LED is exported */ Physical(sdbusplus::bus::bus& bus, const std::string& objPath, - const std::string& ledPath) : + SysfsLed& led) : sdbusplus::server::object::object< sdbusplus::xyz::openbmc_project::Led::server::Physical>( bus, objPath.c_str(), true), - path(ledPath) + led(led) { // Suppose this is getting launched as part of BMC reboot, then we // need to save what the micro-controller currently has. @@ -93,28 +65,15 @@ class Physical : public sdbusplus::server::object::object< Action state(Action value) override; private: - /** @brief File system location where this LED is exposed - * Typically /sys/class/leds/<Led-Name> + /** @brief Associated LED implementation */ - std::string path; + SysfsLed& led; /** @brief Frequency range that the LED can operate on. * Will be removed when frequency is put into interface */ uint32_t frequency; - /** @brief Brightness described above */ - std::string brightCtrl; - - /** @brief BlinkCtrl described above */ - std::string blinkCtrl; - - /** @brief delay_on described above */ - std::string delayOnCtrl; - - /** @brief delay_ff described above */ - std::string delayOffCtrl; - /** @brief reads sysfs and then setsup the parameteres accordingly * * @return None @@ -143,46 +102,6 @@ class Physical : public sdbusplus::server::object::object< * @return None */ void blinkOperation(); - - /** @brief Generic file writer. - * There are files like "brightness", "trigger" , "delay_on" and - * "delay_off" that will tell what the LED driver needs to do. - * - * @param[in] filename - Name of file to be written - * @param[in] data - Data to be written to - * @return - None - */ - template <typename T> - auto write(const std::string& fileName, T&& data) - { - if (std::ifstream(fileName)) - { - std::ofstream file(fileName, std::ios::out); - file << data; - file.close(); - } - return; - } - - /** @brief Generic file reader. - * There are files like "brightness", "trigger" , "delay_on" and - * "delay_off" that will tell what the LED driver needs to do. - * - * @param[in] filename - Name of file to be read - * @return - File content - */ - template <typename T> - T read(const std::string& fileName) - { - T data = T(); - if (std::ifstream(fileName)) - { - std::ifstream file(fileName, std::ios::in); - file >> data; - file.close(); - } - return data; - } }; } // namespace led |