summaryrefslogtreecommitdiffstats
path: root/physical.hpp
diff options
context:
space:
mode:
authorAndrew Jeffery <andrew@aj.id.au>2018-05-24 13:34:05 +0930
committerAndrew Jeffery <andrew@aj.id.au>2019-04-08 13:48:02 +0930
commit42e02d34113534c2e98dfd321fa79671fa7e1d20 (patch)
tree8b21eb3c30f92a56599bb2d49474f57da49587d6 /physical.hpp
parente185efb810f0befb26276c776d71ed8e56059a1a (diff)
downloadphosphor-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.hpp99
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
OpenPOWER on IntegriCloud