interfaces: use old dbus encoding

Due to backwards compatibility with old configurations, this is an easy
fix to bring back the old object paths.

Tests are provided to capture this behavior.

Change-Id: Ic89f2eb02bb908cf23b833b08fdca941bef2a07a
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
4 files changed
tree: 8719f8ecd2f49093d16a868146a46c57a2d8147b
  1. dbus-1/
  2. interfaces/
  3. subprojects/
  4. systemd/
  5. test/
  6. udev/
  7. .clang-format
  8. .clang-tidy
  9. .gitignore
  10. add_led_action.cpp
  11. argument.cpp
  12. argument.hpp
  13. controller.cpp
  14. LICENSE
  15. meson.build
  16. meson.options
  17. OWNERS
  18. physical.cpp
  19. physical.hpp
  20. README.md
  21. sysfs.cpp
  22. sysfs.hpp
README.md

phosphor-led-sysfs

This project exposes physical LEDs on dbus.

Example

Say we have 'identify' LED in our system, which may be declared in devicetree.

leds {
    compatible = "gpio-leds";

    identify {
        gpios = <&gpio ASPEED_GPIO(S, 6) GPIO_ACTIVE_HIGH>;
    };
};

We can add an LED via the helper program. The main service is then started via dbus-activation.

./add-led-action --path /sys/class/leds/identify

which will expose following dbus objects:

busctl tree xyz.openbmc_project.LED.Controller
`- /xyz
  `- /xyz/openbmc_project
    `- /xyz/openbmc_project/led
      `- /xyz/openbmc_project/led/physical
        `- /xyz/openbmc_project/led/physical/identify

busctl introspect  xyz.openbmc_project.LED.Controller /xyz/openbmc_project/led/physical/identify
NAME                                TYPE      SIGNATURE  RESULT/VALUE                             FLAGS
...
xyz.openbmc_project.Led.Physical    interface -          -                                        -
.Color                              property  s          "xyz.openbmc_project.Led.Physical.Pal... emits-change writable
.DutyOn                             property  y          50                                       emits-change writable
.Period                             property  q          1000                                     emits-change writable
.State                              property  s          "xyz.openbmc_project.Led.Physical.Act... emits-change writable

In the above output, the usual org.freedesktop.* interfaces have been removed to keep it readable.

Example: using the dbus interface

Query the LED State

busctl get-property  xyz.openbmc_project.LED.Controller \
/xyz/openbmc_project/led/physical/identify \
xyz.openbmc_project.Led.Physical State \
s "xyz.openbmc_project.Led.Physical.Action.Off"

Set the LED State

busctl set-property  xyz.openbmc_project.LED.Controller \
/xyz/openbmc_project/led/physical/identify \
xyz.openbmc_project.Led.Physical State s \
"xyz.openbmc_project.Led.Physical.Action.Off"

How to Build

meson setup build
cd build
ninja