3个版本 (重大更改)
0.2.0 | 2021年10月19日 |
---|---|
0.1.0 | 2021年10月18日 |
0.0.1 | 2021年10月17日 |
#994 in Unix API
24KB
507 行
pwmd
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