3个版本 (重大更改)

0.2.0 2021年10月19日
0.1.0 2021年10月18日
0.0.1 2021年10月17日

#994 in Unix API

MIT许可证

24KB
507

pwmd

Crates.io docs.rs

pwmd将Linux的sysfs PWM接口暴露给DBUS。

原因

PWM控制器通常用于LED。玩LED很有趣,而且由于Linux内核提供的简单sysfs API,控制它们也非常容易。唯一的缺点是,您需要root权限才能使用它。

使用pwmd,您可以使用DBUS控制LED而无需root权限。在内部,pwmd使用sysfs API - 它通过DBUS将sysfs的这一部分暴露给用户空间,而不会使脚本导致sysfs的其他部分出现混乱。

入门

$ cargo install --git https://github.com/kevinbader/pwmd
$ sudo pwmd

pwmd随后在DBUS上暴露其API。例如,您可以使用dbus-send导出第一个PWM控制器

SERVICE="com.kevinbader.pwmd"
OBJECT_PATH="/com/kevinbader/pwmd/pwm1"
INTERFACE="com.kevinbader.pwmd.pwm1"
METHOD="Export"
dbus-send --system \
  --type=method_call --print-reply \
  --dest=$SERVICE \
  $OBJECT_PATH \
  ${INTERFACE}.${METHOD} uint32:0

使用busctl查看可用方法

$ busctl --user introspect com.kevinbader.pwmd /com/kevinbader/pwmd/pwm1
NAME                                TYPE      SIGNATURE RESULT/VALUE FLAGS
com.kevinbader.pwmd.pwm1            interface -         -            -
.Disable                            method    uu        (qs)         -
.Enable                             method    uu        (qs)         -
.Export                             method    u         (qs)         -
.Quit                               method    -         (qs)         -
.SetDutyCycleNs                     method    uut       (qs)         -
.SetPeriodNs                        method    uut       (qs)         -
.SetPolarity                        method    uus       (qs)         -
.Unexport                           method    u         (qs)         -

待办事项

  • CONTRIBUTORS文件
  • GitHub Actions流水线设置
  • systemd文件
  • 描述如何控制日志输出
  • 专门针对LED的高级API

依赖关系

~22–36MB
~561K SLoC