diff options
author | Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com> | 2016-11-30 12:21:25 +0530 |
---|---|---|
committer | Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com> | 2016-12-12 12:52:25 +0530 |
commit | bda97eb107fc60544fb8cde0ec1ada1da2d66f73 (patch) | |
tree | ae19e42104bf3e6d0ca0afd018f3590fac13dcad /xyz | |
parent | 835571ebcf22165135429efb0d77f11b92540ecf (diff) | |
download | phosphor-led-sysfs-bda97eb107fc60544fb8cde0ec1ada1da2d66f73.tar.gz phosphor-led-sysfs-bda97eb107fc60544fb8cde0ec1ada1da2d66f73.zip |
Use generated bindings for physical led controller
Extends the generated interface and provides skeleton implementation of led
controller.
Change-Id: I13485f39755213b8a7324e526d6335f3ee0a2b67
Signed-off-by: Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com>
Diffstat (limited to 'xyz')
-rw-r--r-- | xyz/openbmc_project/Led/Physical/server.hpp | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/xyz/openbmc_project/Led/Physical/server.hpp b/xyz/openbmc_project/Led/Physical/server.hpp new file mode 100644 index 0000000..2269f42 --- /dev/null +++ b/xyz/openbmc_project/Led/Physical/server.hpp @@ -0,0 +1,149 @@ +#pragma once +#include <tuple> +#include <systemd/sd-bus.h> +#include <sdbusplus/server.hpp> + +namespace sdbusplus +{ +namespace xyz +{ +namespace openbmc_project +{ +namespace Led +{ +namespace server +{ + +class Physical +{ + public: + /* Define all of the basic class operations: + * Not allowed: + * - Default constructor to avoid nullptrs. + * - Copy operations due to internal unique_ptr. + * Allowed: + * - Move operations. + * - Destructor. + */ + Physical() = delete; + Physical(const Physical&) = delete; + Physical& operator=(const Physical&) = delete; + Physical(Physical&&) = default; + Physical& operator=(Physical&&) = default; + virtual ~Physical() = default; + + /** @brief Constructor to put object onto bus at a dbus path. + * @param[in] bus - Bus to attach to. + * @param[in] path - Path to attach at. + */ + Physical(bus::bus& bus, const char* path); + + enum class Action + { + Off, + On, + Blink, + }; + enum class Palette + { + Unknown, + Red, + Green, + Blue, + Yellow, + }; + + + + /** Get value of State */ + virtual Action state() const; + /** Set value of State */ + virtual Action state(Action value); + /** Get value of DutyOn */ + virtual uint8_t dutyOn() const; + /** Set value of DutyOn */ + virtual uint8_t dutyOn(uint8_t value); + /** Get value of Color */ + virtual Palette color() const; + /** Set value of Color */ + virtual Palette color(Palette value); + + /** @brief Convert a string to an appropriate enum value. + * @param[in] s - The string to convert in the form of + * "xyz.openbmc_project.Led.Physical.<value name>" + * @return - The enum value. + */ + static Action convertActionFromString(std::string& s); + /** @brief Convert a string to an appropriate enum value. + * @param[in] s - The string to convert in the form of + * "xyz.openbmc_project.Led.Physical.<value name>" + * @return - The enum value. + */ + static Palette convertPaletteFromString(std::string& s); + + private: + + /** @brief sd-bus callback for get-property 'State' */ + static int _callback_get_State( + sd_bus*, const char*, const char*, const char*, + sd_bus_message*, void*, sd_bus_error*); + /** @brief sd-bus callback for set-property 'State' */ + static int _callback_set_State( + sd_bus*, const char*, const char*, const char*, + sd_bus_message*, void*, sd_bus_error*); + + /** @brief sd-bus callback for get-property 'DutyOn' */ + static int _callback_get_DutyOn( + sd_bus*, const char*, const char*, const char*, + sd_bus_message*, void*, sd_bus_error*); + /** @brief sd-bus callback for set-property 'DutyOn' */ + static int _callback_set_DutyOn( + sd_bus*, const char*, const char*, const char*, + sd_bus_message*, void*, sd_bus_error*); + + /** @brief sd-bus callback for get-property 'Color' */ + static int _callback_get_Color( + sd_bus*, const char*, const char*, const char*, + sd_bus_message*, void*, sd_bus_error*); + /** @brief sd-bus callback for set-property 'Color' */ + static int _callback_set_Color( + sd_bus*, const char*, const char*, const char*, + sd_bus_message*, void*, sd_bus_error*); + + + static constexpr auto _interface = "xyz.openbmc_project.Led.Physical"; + static const vtable::vtable_t _vtable[]; + sdbusplus::server::interface::interface + _xyz_openbmc_project_Led_Physical_interface; + + Action _state = Action::Off; + uint8_t _dutyOn = 50; + Palette _color = Palette::Unknown; + +}; + +/* Specialization of sdbusplus::server::bindings::details::convertForMessage + * for enum-type Physical::Action. + * + * This converts from the enum to a constant c-string representing the enum. + * + * @param[in] e - Enum value to convert. + * @return C-string representing the name for the enum value. + */ +std::string convertForMessage(Physical::Action e); +/* Specialization of sdbusplus::server::bindings::details::convertForMessage + * for enum-type Physical::Palette. + * + * This converts from the enum to a constant c-string representing the enum. + * + * @param[in] e - Enum value to convert. + * @return C-string representing the name for the enum value. + */ +std::string convertForMessage(Physical::Palette e); + +} // namespace server +} // namespace Led +} // namespace openbmc_project +} // namespace xyz +} // namespace sdbusplus + |