blob: 79c299b975a30b251eb7fd1912d8b0b8d09e73b6 [file] [log] [blame]
Matthew Barth38a93a82017-05-11 14:12:27 -05001#pragma once
2
3namespace phosphor
4{
5namespace fan
6{
7namespace control
8{
9namespace handler
10{
11
12/**
13 * @brief A handler function to set/update a property
14 * @details Sets or updates a property's value determined by a combination of
15 * an object's path and property names
16 *
17 * @param[in] path - Object's path name
Matthew Barthcec5ab72017-06-02 15:20:56 -050018 * @param[in] interface - Object's interface name
Matthew Barth38a93a82017-05-11 14:12:27 -050019 * @param[in] property - Object's property name
20 *
21 * @return Lambda function
22 * A lambda function to set/update the property value
23 */
24template <typename T>
Matthew Barthcec5ab72017-06-02 15:20:56 -050025auto setProperty(const char* path, const char* interface, const char* property)
Matthew Barth38a93a82017-05-11 14:12:27 -050026{
27 return [=](auto& zone, T&& arg)
28 {
Matthew Barthcec5ab72017-06-02 15:20:56 -050029 zone.setPropertyValue(path, interface, property, std::forward<T>(arg));
Matthew Barth38a93a82017-05-11 14:12:27 -050030 };
31}
32
33} // namespace handler
34} // namespace control
35} // namespace fan
36} // namespace phosphor